CS学生刚刚开始使用C ++,我很难理解cin和getline()如何读取数据。
string str_1 = "";
cin >> str_1; // User enters "John(Enter)"
我的理解是cin>>将在输入缓冲区中查找数据,如果未找到,则会提示用户。然后它将读入“John”,在缓冲区中留下一行返回\ n。
如果之后调用了getline(),它会看到\ n并且没有返回任何内容吗?
如果下次调用cin它会按预期工作,为什么cin看不到缓冲区中的行返回并终止?
答案 0 :(得分:3)
关于你的第一个“理解”:不,如果没有输入等待,它将简单地阻塞(等待),直到有数据可以写入目标变量。没有提示。
关于getline
电话,那么是的,这是正确的。
输入操作符>>
在读取字符串或数字时跳过前导空格。
如果您想了解详细信息,我建议您从this std::istream
reference开始,然后从那里开始。