首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何抓取cin中的第一个非白色字符

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

Stack Overflow用户
提问于 2014-02-09 07:34:14
回答 2查看 929关注 0票数 1

好了,问个小问题。

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

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

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

EN

回答 2

Stack Overflow用户

发布于 2014-02-09 07:36:29

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

代码语言:javascript
复制
char firstChar = (is >> std::ws).get();

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

代码语言:javascript
复制
is.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
票数 3
EN

Stack Overflow用户

发布于 2014-02-09 07:36:38

作为Formatted Input Functionoperator<<将丢弃前导空格字符,因此您可以这样做:

代码语言:javascript
复制
char c;
cin >> c;

剩下的部分可以用std::istream::ignore来完成

代码语言:javascript
复制
// Ignore everything or up to the first new line character,
// whichever comes first
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21653152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档