#include <iostream>
#include <iomanip>
#include <limits>
using namespace std;
int main() {
int i2 = 0;
double d2 = 0.0;
string s2;
cin >> i2;
cin >> d2;
getline(cin, s2);
cout << "Integer = " << i2 << endl;
cout << "Double = " << d2 << endl;
cout << "String = " << s2 << endl;
}
我试图将样本输入作为:
12
3.4
Coding
预期产出:
Integer = 12
Double = 3.4
String = Coding
实际输出
Integer = 12
Double = 3.4
String =
如上面的实际输出所示,在从上方输入前两个输入并按下输入的那一刻之后,它不接受我想要给出的下一个输入。
答案 0 :(得分:2)
你有一个&#39; \ n&#39;在流中,所以getline读取空行。 写:
cin >> d2:
cin.ignore(); // new line
getline(cin,s2);
更新:
您可以使用更柔和的版本:
cin >> d2;
cin.ignore(); // removes separator
while (cin && !meaningful(s2))
getline(cin,s2);
你可以在有意义的()函数中包含一些测试,例如,包含更多的空格。
答案 1 :(得分:0)
当getline()
被调用时,'\n'
处有未读cin
,
cin >> d2;
所以getline()
只读取一个空字符串。
答案 2 :(得分:0)
你有一个未读的换行符,所以你的getline会读取一个空行。
while(s2.empty())
{
getline(cin, s2);
}
解决了这个问题。