【发布时间】:2014-03-08 08:21:34
【问题描述】:
为什么我们需要在输入字符串之前使用cin.ignore()?
什么是反手过程?如果我们不使用cin.ignore(),为什么它会跳过字符串中的输入(如果我们调用getline 函数以获得更多变量)?
【问题讨论】:
标签: c++
为什么我们需要在输入字符串之前使用cin.ignore()?
什么是反手过程?如果我们不使用cin.ignore(),为什么它会跳过字符串中的输入(如果我们调用getline 函数以获得更多变量)?
【问题讨论】:
标签: c++
只有当有一些以前的输入你没有读过时,你才需要使用cin.ignore()。如果没有,那么你就不需要这样做,它会导致你忽略你想要的东西。最常见的情况是忽略前一行结束的换行符。
如果有人键入“foo
【讨论】:
std::getline() 仅当流中有一个前导换行符位于您要读取的输入之前,才会“跳过”输入。如果您之前执行了格式化的提取并留下了残留的换行符,则可能会出现这种情况。默认情况下,std::getline() 会在获取换行符时分隔提取。
ignore()是一个丢弃一定数量字符的函数(默认丢弃的数量是1)。如果您在未格式化的提取(如std::getline())之前使用它,但在格式化 提取(如std::istream::operator>>())之后使用它,它将允许按预期读取数据,因为它将丢弃剩余的换行符.
这个我在my answer here详细讲。
【讨论】: