可能重复:
如何在 C++ 中将字符串解析为 int?
在 C++03 中有多种方法可以将字符串转换为 int。到目前为止我发现的最好的是:
string text;
cin>>text;
int converted;
if ( !(istringstream(text) >> converted) ){
cout<<"conversion failed\n";
}
cout<<"the converted string is "<<converted;
这个解决方案的问题是它接受“12monkeys”并毫不犹豫地将其转换为12。在这种情况下,是否有一些简单的方法可以检查并输出“转换失败”?
请注意,我已经尝试过 atoi()、atol() 和 strtol(),但如果失败则返回 0 的事实是徒劳的。我怎么知道字符串是否不是“0”?也没有范围检查(strtol() 除外)。没有提到那里也存在“12monkeys”问题。