输入可变数量的数据,没有终止字符C ++

时间:2014-01-24 22:32:24

标签: c++ input operator-overloading

我无法正确地重载输入操作符以允许用户输入可变数量的数据。该对象是一个多项式数组,它在其度数的索引下保存系数。因此,如果输入是5 6 2 3 1 4 -3,则5存储在索引6,2处3,1处4和-3处0。我有一个set_ceoff()函数,可以根据需要插入和调整大小,但我们的指导员具体要求不要求终止字符来读取输入。到目前为止,这是我所拥有的代码,基于我在互联网上找到的信息,并且在编码时它起作用,然后几天后我回到代码中,现在它在我输入相同的数据后就中断了我以前用过。 (这是我完成并提交作业后几天的信心......所以现在我有点恐慌:S)

这是我的重载>>操作者:

friend istream& operator >>(istream& input, Polynomial& arr) {
    // variables to hold input values
    int coeff = 0;
    int power = 0;
    // read input, inserting values into poly and power, then into arr, if 
    // successful
    while (true) {
        if (input >> coeff) {
            if (input >> power) {
                arr.set_coeff(coeff, power);
            }
            else {
                arr.set_coeff(coeff, 0);
                break;
            }
        }
        else {
            break;
        }
    }
    return input;
}

任何帮助都表示赞赏,我不希望得到答案,但正确方向上的一点将会很棒!谢谢!

1 个答案:

答案 0 :(得分:0)

我误读了指令,输入的第一个值是它之后的整数,所以我抓住第一个值并通过输入循环多次以获取其余值。

int nums = 0;
int value = 0;

input >> nums;

for (int i = 0; i < nums; i++) {
    input >> value;
    pArray.set_coeff(i,value);
}

感谢所有的帮助,抱歉混淆!