我可以想到两种将字符串转换为int
:strtol
和std::stringstream
. 前者不报告错误(如果字符串不是数字的表示),后者抛出异常但它太宽松了。一个例子:
std::wstring wstr("-123a45");
int result = 0;
try { ss >> result; }
catch (std::exception&)
{
// error handling
}
我想在这里检测一个错误,因为整个字符串不能转换为 int,但是没有抛出异常并且结果设置为 -123。如何使用标准 C++ 工具解决我的任务?