C++ 有理数类型的 I/O 操作、赋值与初始化
1. 自定义 I/O 操作符
在 C++ 中,我们希望能够直接读写有理数,例如 std::cout << rational{355, 113} 。下面将介绍实现这一功能所需的输入和输出操作符。
1.1 输入操作符
输入操作符(也称为提取器)用于从流中提取数据。它的第一个参数是 std::istream& ,必须是非 const 引用,因为函数会修改流对象;第二个参数也是非 const 引用,用于存储输入值。按惯例,返回类型是 std::istream& ,返回值是第一个参数,这样可以在单个表达式中组合多个输入操作。
每个流都有一个状态掩码来跟踪错误,可用的状态标志如下表所示:
| 标志 | 描述 |
| ---- | ---- |
| badbit | 不可恢复的错误 |
| eofbit | 文件结束 |
| failbit | 无效的输入或输出 |
| goodbit | 无错误 |
如果输入无效,输入函数会在流的错误状态中设置 failbit 。当调用者测试流是否正常时,会测试错误状态。
我们定义有理数的输入格式为一个整数、一个斜杠 / 和另一个整数,元素前后可以有空格,除非输入流中禁用了空格标志。如果输入的整数后面没有斜杠,该整数将成为结果值(隐式分母为 1),此时需要使用 unget() 函数将
超级会员免费看
订阅专栏 解锁全文
36

被折叠的 条评论
为什么被折叠?



