【发布时间】:2012-11-07 21:36:55
【问题描述】:
在 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”问题。
【问题讨论】:
-
不幸的是我不能使用boost,所以我不能使用C++11。我想在C++03中找到最优雅、最简单的解决方案。
-
你不能用boost,所以你不能用C++11?这没有多大意义。 Boost 适用于 C++03,还是您的意思是和?
-
你有没有通过answer to a very similar question。它详细解决了您的问题。
-
解决“12monkeys”输入的问题,见here
-
"strtol() 但如果失败则返回 0 的事实是徒劳的。我怎么知道..." rtfm: man strtol.或阅读 wnraman 链接的答案。
标签: c++ string int type-conversion c++03