用Isringstream C 提取多项式的系数

Extract the coefficients of a polynomial with istringstream c++

本文关键字:多项式 提取 Isringstream      更新时间:2023-10-16

当前我正在从事一个项目(即创建多项式类别(,并且我已经实现了"添加提取二维和启用"方法。但是我陷入了一种从类似3x^1-2x^4之类的字符串传递到系数矢量的方法,例如0 3 0 04。

所以这是代码:

  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,但是不幸的是,由于某种原因,它似乎不起作用,我无法弄清楚我的代码有什么问题?"多项式P(系数("似乎是空的。也许是构造函数的东西?

  Polynomial::Polynomial (const vector<double>& coeff)
  : coeff(coeff)
  {}
  // Constructor from string.
  Polynomial::Polynomial (const string& spoly) : spoly(spoly) {}

预先感谢!

是的,最终我发现了问题所在。我正在编译Mac上,但是当我切换到Linux时,它可以完美地工作。因此,Mac的解决方案是编写

 cout << endl; 

在代码块的末尾。