【问题标题】:cin >> ws vs cin.ignore(numeric_limits<streamsize>::max(), '\n')?cin >> ws 与 cin.ignore(numeric_limits<streamsize>::max(), '\n')?
【发布时间】:2019-11-05 05:48:37
【问题描述】:

从阅读https://en.cppreference.com/w/cpp/io/manip/ws 看来,cin &gt;&gt; ws 似乎完成了cin.ignore(numeric_limits&lt;streamsize&gt;::max(), '\n') 的本意(丢弃前导空格和换行符)。

还有其他我没有考虑到的差异吗?我很好奇为什么cin &gt;&gt; ws 不像更复杂的cin.ignore(numeric_limits&lt;streamsize&gt;::max(), '\n') 那样更常用或流行,后者也需要#include &lt;limits&gt;。

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

【问题讨论】:

  • 请编辑您的问题标题,使其具有描述性
  • ........否

标签: c++ cin


【解决方案1】:

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

其次,ignore 丢弃直到指定的分隔符,它可以是任何字符(不仅是换行符),而ws 忽略前导空格,直到有任何 非空格 字符。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2017-05-03
    相关资源
    最近更新 更多