重载>>用于分数类C++

4 c++ operator-overloading

我正在尝试为一个分数类重载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)

我在这里走在正确的轨道上吗?

Mar*_*k B 5

您的分数需要是输出参数,因此它不能是const:

istream& operator>>(istream& in, Fraction& input)

然后在函数内部,您将提取到一个std::string然后解析的内容,并将相关数据存储到您的input Fraction对象中.