C++ 重载istream运算符以显示多行项目中的分数

C++ 重载istream运算符以显示多行项目中的分数,c++,c++11,C++,C++11,你好,这确实是我在这个论坛上的第一篇帖子。我需要一些指导我的C++程序,我在一个情况下,我不知道从哪里开始使我的正常和混合分数显示从一个文件。以下是我到目前为止对头文件和实现文件的介绍主要焦点是Fraction.cpp中的iStream函数,以便能够显示文件中的混合分数和正常分数。如有任何帮助,将不胜感激 这是我的分数.cpp代码 /* USED FOR FUNCTIONS */ #include <iostream> #include <cmath> #include

你好,这确实是我在这个论坛上的第一篇帖子。我需要一些指导我的C++程序,我在一个情况下,我不知道从哪里开始使我的正常和混合分数显示从一个文件。以下是我到目前为止对头文件和实现文件的介绍主要焦点是Fraction.cpp中的iStream函数,以便能够显示文件中的混合分数和正常分数。如有任何帮助,将不胜感激

这是我的分数.cpp代码

/* USED FOR FUNCTIONS */
#include <iostream>
#include <cmath>
#include <cctype>
#include <cassert>
#include "fraction.h"
using namespace std;

namespace cs10b_fraction
{


ostream& operator << (std::ostream &out, const Fraction printMe)
{

    if (printMe.denom == 1)
    {
        out << printMe.num << endl;
    }

    else if (printMe.num == 0)
    {
        out << printMe.num << endl;
    }

    else if(printMe.denom == -1)
        out << printMe.num / printMe.denom << endl;

    else if(printMe.num < printMe.denom && printMe.num != 0)
        out << printMe.num << "/" << printMe.denom << endl;

    else if(abs(printMe.num) > abs(printMe.denom))
        out << printMe.num / printMe.denom << "+" << (printMe.num % printMe.denom) << "/" << printMe.denom << endl;



   /* else if (abs(printMe.num) > abs(printMe.denom))
        out << printMe.num / printMe.denom << endl;

    else if (abs(printMe.num) > abs(printMe.denom))
        out << printMe.num / printMe.denom << "+" << (printMe.num % printMe.denom) << "/" << printMe.denom << endl; */

    return out;
}

istream& operator >> (std::istream &in, Fraction readMe)
{
   int temp;
   in >> temp;



    if (in.peek() == '+')
    {

    }

    else if (in.peek() == '/')
    {

    }

    else
    {

    }

    return in;

}

}
/*用于函数*/
#包括
#包括
#包括
#包括
#包括“分数.h”
使用名称空间std;
名称空间cs10b_分数
{

ostream&operator一个重要提示:
operator
应通过引用获取第二个参数,否则它们将按值传递,并且您(1)在将对象传递给输出运算符时为复制对象创建不必要的开销,以及(2)使您无法从输入运算符中读取值。其余部分—读取和打印值的算法—是您必须自己解决的问题—对不起,堆栈溢出不是人们做其他作业的地方。

显示的分数应该是:-1/3 3/6 3072/4096-4/5 12/2 5-8 21/15-50/3 1+1/4 1+5/5-4+3/12-10+10/12请比“我有点麻烦”更具体一些,删除所有与您的问题无关的代码。(还有,您“有点麻烦”。)我认为所有的代码对于这个问题都是必要的,因为它是一个多文件项目,我应该说“我的主要问题是让fraction.cpp中的istream函数在我的客户端.cpp中显示混合分数和正常分数”massive
main
、您的输出运算符和您的简化与实现输入运算符的问题无关。我明白您的意思,对其进行了编辑,使其更加简洁
/*USED FOR CLASS WITH FUNCTIONS ETC */
#ifndef FRACTION_H
#define FRACTION_H

#include <iostream>
#include <cmath>
#include <cctype>
#include <cassert>
using namespace std;

namespace cs10b_fraction
{
class Fraction
{
public:
    Fraction(int n = 0, int d = 1)
    {
        num = n;
        denom = d;
        assert(denom != 0);
        Simplify();
    }

friend ostream& operator << (std::ostream &out, const Fraction printMe);
friend std::istream& operator >> (std::istream &in, Fraction readMe);

private:
    int num;
    int denom;

    void Simplify();
};
}

#endif