【发布时间】:2022-12-14 12:00:41
【问题描述】:
int main()
{
string a, b;
cin >> a;
// cin.ignore(10000, '\n');
getline(cin, b); // in this case, it wouldn't ignore the \n, so it would just terminate without taking the input
cout << a << endl;
cout << b << endl;
}
我的问题具体是关于为什么 '\n' 留在输入流中,以及关于 cin 和 getline() 的规则,关于空格和定界符。
【问题讨论】:
-
@273K 谢谢,我想 OP 可以读取 dup
-
@j 但你是对的。空格不被视为字符串/单词的一部分。
-
cin >> a和getline(cin, b)对他们阅读和不阅读的内容有非常精确(而且不是很复杂)的规则。您应该熟悉它们。 -
顺便说一句,这些规则是关于读什么和不读什么的。尽管您可能听说过,但“缓冲区”不是这些规则的任何部分。只需专注于阅读或未阅读的内容。当您进行控制台输入时,可能会出现字符可以输入但尚未读取的情况,有时称为缓冲区,但实际上并不相关。
-
ignore()当然也是这些规则的一部分,但同样与任何缓冲区无关。
标签: c++