为什么我们需要在 getline(cin, string) 之前使用 cin.ignore() ?

Ume*_*mer 5 c++

为什么我们需要cin.ignore()在字符串中输入之前使用?

反手过程是怎样的?getline如果我们不使用 ,为什么它会跳过字符串中的输入(如果我们调用函数来获取更多变量) cin.ignore()

0x4*_*2D2 2

std::getline()仅当流中存在位于您要读取的输入之前的前导换行符时,才会“跳过”输入。如果您之前执行了格式化提取并留下了残留的换行符,则可能会发生这种情况。默认情况下,std::getline()在获取换行符时分隔提取。

ignore()是一个丢弃一定数量字符的函数(默认情况下丢弃的数量为 1)。如果您在未格式化的提取(如 )之前使用此命令,std::getline()但在格式化提取(如std::istream::operator>>())之后使用它,它将允许按照您的预期读取数据,因为它将丢弃残留的换行符。

我在这里的回答中详细讨论了这一点。