我在夏天分配了一些作业,由于这个问题,我完成了98%的项目陷入瘫痪。
我有一个类叫做混合课。它包含一个整数,一个分子和一个分母的成员数据。我需要重载所有常见的运算符,以允许混合,加法,比较和流混合类型的对象。除了>>(提取运算符),我所有运算符都已重载。
读入的所有混合数字将采用以下格式:
整个分子/分母
例如:1 2 / 3、0 7/8,-3 18 / 5、0 -1/89
header :friend istream& operator>> (istream &, Mixed);
CPP文件:istream& operator>> (istream &in, Mixed m) {...}
对于该任务,我仅限于iostream和iomanip库。我的计划是从流中读取值,并将它们分配给临时的int变量(w,n,d),然后将其与Mixed构造函数一起使用以创建对象m。不幸的是,我想不出一种将分子和分母分开的方法。它们都是整数,但是它们之间有一个char(/)。
再一次,我需要仅使用iostream和iomanip将“22/34”之类的值分为22和34。有什么我可以忽略的明显方法吗?有没有一种方法可以使用指针进行隐式转换?
最佳答案
您可以先提取命名符,然后提取分隔符,然后提取分母。
举例说明:
istream& operator>> (istream &in, Mixed &m) {
int num, denom;
char separ;
in >> num;
in.get(separ);
if (separ != '/')
in.setstate(ios::failbit);
in >> denom;
if (in) {
// All extraction worked
m.numerator = num;
m.denominator = denom;
}
return in;
}
关于c++ - 混合数字类istream问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12042995/