c++ - 如何获取 cin 中的第一个非白色字符

标签 c++ cin

好的,快速提问。

在 C++ 中,我想忽略空格,所以我知道我需要使用 cin 而可能不是 cin.get 因为“空格”是一个字符。

但是,如果用户输入多个字符,我还想只获取第一个非空白字符并忽略其他字符。如果其余的字符没有被忽略,那么输入将影响我稍后在程序中的其他 cin

所以我猜我应该使用 cin.ignore( ),但我也意识到我不能只添加一个 1000 的参数,因为用户随后必须输入 1000 个字符(至少在我测试时是这样)。那么如何只获取第一个非空白字符呢?

最佳答案

第一个非空白字符(假设输入流不为空)可以通过清除前导空白获得,然后使用下一个字符:

char firstChar = (is >> std::ws).get();

要清除输入流的其余部分,您可以ignore() 所有剩余的字符直到下一个换行符,例如:

is.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

关于c++ - 如何获取 cin 中的第一个非白色字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21653152/

相关文章:

c++ - 根据对象的成员函数从 vector 中删除对象

C++ 最小/最大函数错误 (C2665)

c++从用户输入返回字符串或字符

c++ - 如何在不按 ENTER 且不使用 getch() 或 getche() 的情况下读取 C++ 中的字符?

c++ - Cin 跳过输入整数

c++ - 在一行上流式传输多个变量?

c++ - 如何防止 "How do you want to open this file"对话框?

c++ - 取消引用适用于 ptr->operator*() 但不适用于 *ptr

c++ - QUrl逐段构建

c++ - vector 的 vector 是什么样的?