我的c ++程序连接我不告诉他的字符串

时间:2013-12-03 08:33:00

标签: c++ g++ mingw

嗨,我正在为c ++上的家庭作业编写这个小程序。 它是关于多项式的,它要求多项式的次数,指数,系数和常数乘以系数。 现在我有了这个我一直在做的代码:

#include <iostream>
#include <iomanip>
#include <locale>
#include <sstream>
#include <string>
using namespace std;

int main ()
{    
    int deg=0, x=0, con, co;
    string m, n, poli="";
    ostringstream convert, convert1;

    cout<<"Hi! this program will show the resulting polynomial of multiplying the \npolynomial times the constant.\n\n";
    cout<<" ";
    cout<<"\n\nBut first give me the degree of the polynomial (max 9): "; cin>>deg;
    cout<<"\n\nNow the Multiplier constant: "; cin>>con;

    cout<<"\n\nNow give me the coefficients of the polynomial.\n";

    while(deg!=0){

        int n1=0, n2=0, n3=0;
        string m="", n="";
        convert.clear();
        convert1.clear();

        cout<<"Exponent " << deg <<" coefficient: "; cin >>co; cout<<"\n\n";

        if(co!=0){

            n2=(co*con);
            n3=(deg+0);

            convert << n2;
            convert1 << n3;
            m = convert.str();
            n = convert1.str();
            poli+=m+"x^"+n+" ";
            cout<<poli+"\n\n";        
        }

        deg--;
    }

}

但出于某种原因而不是输出让我们说 3x^4 2x^3 2x2

... it out puts

3x^4 32x^43 322x^432

因为你看到它因某种原因连接而且我不知道为什么,你们可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

您似乎误解了std::basic_ios::clear`函数的作用。它清除流缓冲区。这意味着每次你做

convert << n2;
convert1 << n3;

追加到流中。

要解决此问题,请将流变量convertconvert1置于循环内部,就像mn一样。

答案 1 :(得分:0)

我已声明'ostringstream convert,convert1;'在while循环中,它在这里工作正常。每次while循环迭代后,您的流都没有清除。