我有这段代码,目的是为结构点定义>>运算符(不是整个函数,只是开始)。
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
的目的是什么。它必须是一个布尔值,但它似乎总是错误的,因为此检查始终在我的测试中失败。
答案 0 :(得分:0)
测试“流>>字符” [
is >> ch1
]有什么作用?
>>
是流提取运算符。给定一个字符操作数,它将从流中提取单个字符,并假设没有错误发生,则将该值分配给该操作数。
它必须是布尔值
流提取运算符返回流。流将隐式转换为bool
。如果流没有错误并且可以进行I / O操作,则转换后的值为true;否则为false。