cin >> ws与cin.ignore(numeric_limits <streamsize> :: max(),'\ n')吗?

时间:2019-11-05 05:48:37

标签: c++ cin

通过阅读https://en.cppreference.com/w/cpp/io/manip/ws,似乎cin >> ws完成了cin.ignore(numeric_limits<streamsize>::max(), '\n')的意图(丢弃前导空白和换行符)。

我没有考虑其他差异吗?我想知道为什么cin >> ws不像需要cin.ignore(numeric_limits<streamsize>::max(), '\n')的复杂#include <limits>那样普遍使用或流行。

我发现的唯一另一个问题是: cin, getline, leading whitespace: ignore vs ws,并没有引起太多关注。

1 个答案:

答案 0 :(得分:2)

首先,ignore丢弃所有个字符,直到分隔符,不仅是空格。

第二,ignore丢弃直到指定的分隔符为止,分隔符可以是任何字符(不仅是换行符),而ws则忽略前导空格,直到存在任何非空格字符。

第三,换行符'\n'是一个空格字符,因此将被ws操纵符丢弃。