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

问题描述 投票:0回答:2

好的,快速提问。

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

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

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

c++ cin
2个回答
3
投票

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

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

要清除输入流的其余部分,您可以

ignore()
所有剩余字符,直到下一个换行符,例如:

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

0
投票

operator>>
,作为格式化输入函数,将丢弃前导空白字符,因此您可以这样做:

char c;
cin >> c;

可以使用 std::istream::ignore:

删除其余部分
// Ignore everything or up to the first new line character,
// whichever comes first
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
© www.soinside.com 2019 - 2024. All rights reserved.