这个问题已经在这里有了答案:




已关闭8年。






在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”问题。

最佳答案

您可以显式检查eof:

string text;
cin>>text;
int converted;

istringstream iss(text);
if ( !(iss >> converted) ){
    cout<<"conversion failed\n";
}
if( iss.get() != std::stringstream::traits_type::eof() ) {
    cout<<"cocnversion failed\n";
}
cout<<"the converted string is "<<converted;

关于c++ - 在C++ 03中将字符串转换为int ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13278674/

10-11 22:05