测试"stream >> char"有什么作用?

what does testing an "stream >> char" do?

本文关键字:gt 作用 什么 char 测试 stream      更新时间:2023-10-16

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

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的目的是什么.它一定是一个布尔值,但它似乎总是错误的,因为这个检查总是在我的测试中失败。

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

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

它必须是布尔值

流提取运算符返回流。流隐式转换为bool。如果流没有错误并且已准备好执行 I/O 操作,则转换后的值为 true,否则为 false。