好的,快速提问。
在 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');
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');