我在网上找到这个代码作为模板,用于执行字符串到float / int / double转换.它只在这里,所以我有一些东西可以参考这个问题….
我希望让用户输入一个数字作为字符串,将其转换为浮点数,测试它是否成功,如果输入为’Q’则退出或打印“无效输入”如果它不是’Q’uit字符和返回更多输入.
转换失败测试的语法是什么?它会是ss.fail()吗?
// using stringstream constructors. #include <iostream> #include <sstream> using namespace std; int main () { int val; stringstream ss (stringstream::in | stringstream::out); ss << "120 42 377 6 5 2000"; /* Would I insert an if(ss.fail()) { // Deal with conversion error } } in here?! */ for (int n=0; n<6; n++) { ss >> val; cout << val*2 << endl; } return 0; }
解决方法
您的代码不是很有帮助.但如果我理解你就是这样做的
string str; if (!getline(cin,str)) { // error: didn't get any input } istringstream ss(str); float f; if (!(ss >> f)) { // error: didn't convert to a float }
没有必要使用失败.