我正在尝试为一个分数类重载instream运算符>>.我创建了一个函数,可以从用户获取一个字符串并将其解析为我的Fraction类的正确参数,但我不确定如何在我的>>重载函数中实现它.
用户可以输入三种类型的分数:1.整数(例如5)2.混合数(例如2 + 4/5)3.常规分数(例如1/2)
我的方法是将此输入作为主函数中用户的字符串接受,解析它以获取有效的Fraction类参数,然后将此新创建的fraction对象返回到流.我只是不确定该怎么做.
在我的运算符重载定义中,我有这个:
istream& operator>>(istream& in,const Fraction& input)
Run Code Online (Sandbox Code Playgroud)
但是如果我接受一个字符串,那么这里的参数类型不应该是一个字符串吗?我对这一部分感到非常困惑.我想再返回一个Fraction对象.这是处理整数的一个例子.
int num1 = atoi(input.c_str());
Fraction output(num1);
in >> output;
return in;
Run Code Online (Sandbox Code Playgroud)
我在这里走在正确的轨道上吗?
您的分数需要是输出参数,因此它不能是const:
istream& operator>>(istream& in, Fraction& input)
然后在函数内部,您将提取到一个std::string然后解析的内容,并将相关数据存储到您的input Fraction对象中.