这个问题已经在这里有了答案:
已关闭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/