测试“流>>字符”有什么作用?

时间:2019-12-29 03:45:26

标签: c++ fstream

我有这段代码,目的是为结构点定义>>运算符(不是整个函数,只是开始)。

struct Point {
    int x; 
    int y;
};

代码段

istream& operator>>(istream& is, Cord::Point& p) {
        char ch1;
        if (is >> ch1 && ch1 != '(') { // Is this not a point?
            is.unget();
            is.clear(ios_base::failbit);
            return is;
        }
        //More code...
}

应该通过检查输入的第一个字符是否为(实质上是在假设这一点是(x,y)的形式下检查它是否应该继续输入)来工作。 ch1 == '('在做什么,但是is >> ch1的目的是什么。它必须是一个布尔值,但它似乎总是错误的,因为此检查始终在我的测试中失败。

1 个答案:

答案 0 :(得分:0)

  

测试“流>>字符” [is >> ch1]有什么作用?

>>是流提取运算符。给定一个字符操作数,它将从流中提取单个字符,并假设没有错误发生,则将该值分配给该操作数。

  

它必须是布尔值

流提取运算符返回流。流将隐式转换为bool。如果流没有错误并且可以进行I / O操作,则转换后的值为true;否则为false。