为什么我们需要在getline(cin,string)之前使用cin.ignore()
Why do we need to use cin.ignore() before getline(cin, string)?
为什么我们需要在输入字符串之前使用cin.ignore()
?
什么是反手过程?如果我们不使用cin.ignore()
,为什么它会跳过字符串中的输入(如果我们为更多变量调用getline
函数)?
只有在有一些以前的输入没有读取时,才需要使用cin.ignore()
。如果没有,那么你不需要,这将导致你忽略你想要的东西。最常见的情况是忽略前一行结尾的换行符。
如果有人输入"foo
> std::getline()
只有在流中在您要读取的输入之前有一个前导换行符时,才会"跳过"输入。如果您之前执行了留下剩余换行符的格式化提取,则可能会发生这种情况。默认情况下,std::getline()
在获取换行符时分隔提取。
ignore()
是一个丢弃一定数量字符的函数(默认情况下丢弃的数量为 1)。如果在未格式化提取(如 std::getline()
)之前使用此,但在格式化提取(如 std::istream::operator>>()
)之后使用它,它将允许按预期读取数据,因为它将丢弃残余换行符。
我在这里的回答中详细讨论了这个问题。
相关文章:
- C++中的cin.ignore()函数不适用于整个流
- C++ cin.ignore() 跳过循环
- 更好的方法,而不是在C ++中使用cin.ignore
- C++ - 如何知道在哪里放置 cin.ignore
- C++:忽略第一个 cin.ignore 之后的输入
- cin.ignore() 正在产生不需要的行为
- 如何将光标移动到 cin.clear() 和 cin.ignore() 之后的文本输出末尾?
- C++ cin.ignore and getline in while loop
- CIN被跳过,Cin.ignore不起作用
- CIN.IGNORE删除第一个字符的第二次函数被调用
- cin.ignore(1)之间的分歧是什么?和cin.ignore(n)
- 使用 cin.ignore 和 cin.clear CPP 时的奇怪行为
- 为什么在"cin"后使用 "getline" 时需要 cin.ignore(),而多次使用 "cin" 时不需要?
- getline删除第一个字符;删除cin.ignore();无法解决
- C++怪异的cin.ignore行为
- Cin 不会暂停输入,尽管同时使用了 cin.clear() 和 cin.ignore()
- 当循环不中断时,使用 cin.ignore 和 cin.clear() 来验证输入
- CIN.IGNORE如何与CIN和Getline一起工作
- 尽管Cin.ignore(),CIN不等待输入
- cin.clear() 和 cin.ignore() 不起作用