2014-02-10 97 views

回答

0

std::getline()如果在您希望读取的输入之前的流中存在前导换行符,则只有“跳过”输入。如果您以前执行了格式化的提取,则会留下残余的换行符,这可能会导致问题。默认情况下,std::getline()在获取换行符后分隔提取。

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

我在my answer here中详细讨论这个问题。

1

您只需要使用cin.ignore(),当您有一些以前没有阅读过的输入时。如果没有,那么你不需要,它会导致你忽略你想要的东西。最常见的情况是忽略前一行结束的换行符。

如果有人类型的“富<进入>吧”,你想读“富”,然后“酒吧”,你需要忽略<进入它们之间>(或使用会自动完成的功能)。

相关问题