【问题标题】:testing a condition with istream objects使用 istream 对象测试条件
【发布时间】:2012-06-16 12:26:22
【问题描述】:

我试图使用下面的代码动态读取大量数字,最后是EOF

vector<double> data;
double x;
while (cin >> x)
{
    data.pushback(x);
}

这种方法效果很好,但我想知道下面的表达式发生了什么

cin >> x

是的,我知道它是用来输入数据的,但我怎么能用它来测试条件。
下面的表达式会发生什么:

while (cin) or if (cin)

cin 返回什么?

【问题讨论】:

    标签: c++


    【解决方案1】:

    cinistream类的对象,可以转换为void*,如果发生错误,返回值为空指针(该指针隐式转换为bool)。

    参考here

    【讨论】:

    • 我不能说我完全理解它,因为我从来不知道对象被类型转换为指针,而且我是 c++ 新手。但是你的回答让我对正在发生的事情有了一个粗略的了解。非常有帮助。谢谢sssss :)
    • 转换为void*safe bool idiom的一个例子
    猜你喜欢
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多