好了,问个小问题。
在c++中,我想忽略空格,所以我知道我需要使用cin,而不是cin.get,因为“空格”是一个字符。
但是,如果用户输入多个字符,我也希望只获取第一个非空格字符,而忽略其他字符。如果其余的字符没有被忽略,那么输入将影响我稍后在程序中的其他cin
所以我猜我应该使用cin.ignore( ),但我也意识到我不能简单地添加一个1000的参数,因为用户必须输入1000个字符(至少在我测试的时候是这样)。那么如何只获取第一个非空格字符呢?
发布于 2014-02-09 07:36:29
第一个非空格字符(假设输入流不为空)可以通过清除前导空格,然后消费下一个字符来获得:
char firstChar = (is >> std::ws).get();为了清除输入流的其余部分,您可以ignore()直到下一个换行符的所有剩余字符,如下所示:
is.ignore(std::numeric_limits<std::streamsize>::max(), '\n');发布于 2014-02-09 07:36:38
作为Formatted Input Function的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');https://stackoverflow.com/questions/21653152
复制相似问题