首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ IO流简介

C++ IO流简介
EN

Stack Overflow用户
提问于 2014-02-11 21:21:33
回答 2查看 201关注 0票数 5

我从这篇文章得到了一段代码,我不知道它是如何工作的?片段开头说:

您可以通过测试读取结果来检测特定的读或写操作失败。例如,要检查是否从用户读取有效整数,可以执行以下操作:

代码语言:javascript
复制
int x;
if ( cin >> x ) 
{
    cout << "Please enter a valid number" << endl;
}

这是因为读取操作返回对流的引用。

我知道cin >> x操作返回对cin的引用,但对于如何计算对标准输入流对象的引用使您能够检查输入是否为有效整数,我仍然感到困惑。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-11 21:25:09

cinistream模板类的一个实例。operator >>对这个istream实例进行操作,将输入加载到数据中,并返回对此istream的引用。然后在while条件下,通过调用cin::operator void*() const (explicit operator bool() const in C++11)进行测试,调用fail()函数来测试操作是否成功。这就是为什么可以在时间条件下使用此操作的原因。

代码语言:javascript
复制
while ( cin >> x)
{
   //...
票数 6
EN

Stack Overflow用户

发布于 2014-02-11 21:30:39

根据文档( 布尔/ ),操作员

代码语言:javascript
复制
explicit operator std::ios::bool() const;

“返回是否设置了错误标志(故障位还是坏位)。”“如果设置了至少一个错误标志,则函数返回false,否则返回true。”

因此,当if语句将cin流转换为bool时,如果流设置了错误标志,则该操作符返回false,而true则返回错误标志。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21713282

复制
相关文章

相似问题

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