为什么此代码无法正确读取用户输入?

时间:2018-04-10 04:15:48

标签: c++ input user-input iostream

所以我试图根据用户输入的值和单位为单位转换器编写代码。此代码有时会正确读取输入并正确打印值和单位,但有时它不会读取任何输入。如果输入中的数字和单位之间存在空格,无论代码是否正确读取,这似乎都不重要。但是,我希望这个空间无关紧要(例如" 12m" vs" 12 m")

#include <iostream>
#include <string>

using namespace std;

int main()
{
string units;
double val0 = 0;

cout << "input value and units\n";
cin >> val0 >> units;

cout << "value: " << val0 << "\nunits: " << units << endl;

return 0;
}

1 个答案:

答案 0 :(得分:2)

目前你编程的方式,如果你担心用户错误地使用它会破坏你的程序,那么这个空间总是很重要。

如果您希望空间是任意的,请考虑使用getline函数并以这种方式实现您的函数:

string entireLine;
getline(cin, entireLine); //will store either "12 m" or "12m" in entire line
//detect if entireLine contains a space
       //run isSpace() in a loop across every character in entireLine
//parse the string one way if there is a space
//parse the string if there isn't a space