使用istringstream c ++提取多项式的系数

时间:2018-03-26 15:34:21

标签: c++ string class polynomials istringstream

目前我正在研究一个项目(即创建一个多项式的类),并且我已经实现了"加减法除以等等#34;方法。但我坚持使用一种方法从一个像3x ^ 1-2x ^ 4这样的字符串传递给一个像0 0 0 0 4这样的系数向量。

所以这里是代码:

  string s;
cin >> s;
istringstream iss(s);
double coeff;
char x, sym;
int degree;
vector<double> coefficients;
int i = 0;
while (iss >> coeff >> x >> sym >> degree) {
    //if (sign == '-') coeff *= -1;
    if (degree == i) {
        cout << coeff << i;
        coefficients.push_back(coeff);
        ++i;
    }
    else {
        for (int j = i; j < degree; ++j) {
            coefficients.push_back(0);
        }
        coefficients.push_back(coeff);
        ++i;
    }
   Polynomial p (coefficients);
   p.write();

顺便说一下,我正在使用istringstream,但不幸的是,由于某些原因它似乎无法工作,我无法弄清楚我的代码有什么问题? ? &#34;多项式p(系数)&#34;最后似乎是空的。 也许它与构造函数有关?

  Polynomial::Polynomial (const vector<double>& coeff)
  : coeff(coeff)
  {}

  // Constructor from string.
  Polynomial::Polynomial (const string& spoly) : spoly(spoly) {}

提前致谢!

1 个答案:

答案 0 :(得分:1)

是的,最终我发现了什么是错的。我在Mac上进行编译,但是当我切换到Linux时,它运行得很完美。因此,Mac的解决方案是编写

 cout << endl; 

在代码块的末尾。