2

CS 学生刚开始使用 C++,我很难理解 cin 和 getline() 如何读取数据。

string str_1 = "";

cin >> str_1;        // User enters "John(Enter)"

我的理解是 cin >> 将在输入缓冲区中查找数据,如果没有找到它会提示用户。然后它将读入“John”,在缓冲区中留下一行 return \n。

如果之后调用 getline() ,它将看到 \n 并且什么都不返回,对吗?

如果接下来调用 cin 它将按预期工作,为什么 cin 看不到缓冲区中的行返回并终止?

4

1 回答 1

3

关于您的第一个“理解”:不,如果没有输入等待,它会简单地阻塞(等待)直到有数据可以写入目标变量。不会进行任何提示。

关于getline电话,是的,这是正确的。

读取字符串或数字时的输入运算符>>会跳过前导空格。

如果你想深入了解细节,我建议你从这个std::istream参考开始,然后从那里开始。

于 2015-09-12T20:11:53.817 回答