我在夏天给自己布置了一些作业,我完成了 98% 的项目由于这个问题而陷入停顿。
我有一门叫做混合的课程。它包含整数、分子和分母的成员数据。我需要重载所有常用运算符,以允许混合类型对象的乘法、加法、比较和流式传输。除了 >> (提取运算符)之外,我已经重载了所有运算符。
读入的所有混合数字的格式为: 整数分子/分母
例如:1 2/3、0 7/8、-3 18/5、0 -1/89
标题:friend istream& operator>> (istream &, Mixed);
CPP 文件:istream& operator>> (istream &in, Mixed m) {...}
对于作业,我仅限于 iostream 和 iomanip 库。我的计划是从流中读取值并将它们分配给临时 int 变量(w,n,d),然后我将使用 Mixed 构造函数来创建对象 m。不幸的是,我想不出一种方法来分离分子和分母。它们都是整数,但它们之间有一个字符 (/)。
- 我不能将 getline() 与它的分隔符一起使用,因为它将数据分配给一个 char 数组,我不相信我可以在没有另一个库的情况下将其转换为 int。
- 出于同样的原因,我不能使用 char 数组然后对其进行分段。
- 我不能在 get() 和 peek() 中使用 while 循环,因为我认为我不能将 char 数组转换为 int。
- 我不能使用字符串或 c 字符串然后对其进行分段,因为这需要外部库。
再一次,我需要只使用 iostream 和 iomanip 将像“22/34”这样的值拆分为 22 和 34。我忽略了一些相当明显的方法吗?有没有办法使用指针隐式转换?