C ++,cin如何从输入缓冲区读取?

时间:2015-09-12 20:08:09

标签: c++ iostream cin getline input-buffer

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

string str_1 = "";

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

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

如果之后调用了getline(),它会看到\ n并且没有返回任何内容吗?

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

1 个答案:

答案 0 :(得分:3)

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

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

输入操作符>>在读取字符串或数字时跳过前导空格。

如果您想了解详细信息,我建议您从this std::istream reference开始,然后从那里开始。