C++ cin、getline、前导空格:忽略vs ws

C++ cin、getline、前导空格:忽略vs ws,c++,iostream,C++,Iostream,所以每隔一段时间,当我阅读getline的文档时,我就会想起臭名昭著的空白问题。是的,我知道是什么。这个问题是关于所谓的标准解决方案 std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 两者之间的区别主要是我的一个也忽略了行首的空白。这就是说,对于许多用途来说,它是足够的或等效的,而且可以说更容易记住 那么为什么人们总是推荐第一个呢?两者都不知道?默认情况下是否发现这些空间很宝贵?这是标准解决方案吗

所以每隔一段时间,当我阅读getline的文档时,我就会想起臭名昭著的空白问题。是的,我知道是什么。这个问题是关于所谓的标准解决方案

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
两者之间的区别主要是我的一个也忽略了行首的空白。这就是说,对于许多用途来说,它是足够的或等效的,而且可以说更容易记住


那么为什么人们总是推荐第一个呢?两者都不知道?默认情况下是否发现这些空间很宝贵?

这是标准解决方案吗?什么问题?如果输入是类似123abc的东西,这两个做不同的事情\n…大多数人不知道std::ws及其之间的区别,忽略这是主要原因。这两个做不同的事情。有时他们中的任何一个都会做你想做的事。其他情况下,例如当您希望能够在字符串之前输入空格时,只有第一个空格可以满足您的需要。流函数的一个优点是,您可以将它们链接在一起,形成迷你解析器。当您这样做时,in>>ws可能非常有用,而ignore函数可能完全不正常。
std::cin >> std::ws;