好的,所以我一直试图让这个过去两天工作,但无济于事。基本上有一个文本文件,程序从中提取分数和混合数,以及我的>>运算符应该将它们转换为正常分数,以便由我的<<运算符,工作正常。但是一旦我的函数在文件中命中-8,程序就会崩溃并结束,让我在控制台上按下“按任意键继续”结束提示。它处理-4/5和-10/5没问题,分别返回-4/5和-2。但当负数是整数时,它会崩溃。
istream& operator>>(istream& input, fraction& fr)
{
int Num=0;
int Den=0;
int Whole=0;
input >> Num;
if (input.peek() == '+')
{
Whole = Num;
input.ignore() >> Num;
input >> Den;
}
else if (input.peek() == '/')
{
input.ignore() >> Den;
}
else if (input.peek() == ' ')
{
input.ignore();
Den = 1;
}
Num = (Whole*Den) + Num;
fr = fraction(Num, Den);
return input;
}
答案 0 :(得分:6)
使用默认值Den = 1
而不是0.由于除以0,它会崩溃。