使用 istringstream c++ 提取多项式的系数
Extract the coefficients of a polynomial with istringstream c++
目前我正在做一个项目(即创建多项式的 class)并且我已经实现了 "add-subtract-divide-and-so-on" 方法。但是我坚持使用一种方法从像 3x^1-2x^4 这样的字符串传递到像 0 3 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,但不幸的是,由于某种原因它似乎不起作用而且我无法弄清楚我的代码有什么问题?
"Polynomial p (coefficients)" 最后似乎是空的。
也许是构造函数的问题?
Polynomial::Polynomial (const vector<double>& coeff)
: coeff(coeff)
{}
// Constructor from string.
Polynomial::Polynomial (const string& spoly) : spoly(spoly) {}
提前致谢!
是啊,最后我发现了问题所在。我在 Mac 上编译,但当我切换到 Linux 时,它工作得很好。所以, Mac 的解决方案是写
cout << endl;
在代码块的末尾。
目前我正在做一个项目(即创建多项式的 class)并且我已经实现了 "add-subtract-divide-and-so-on" 方法。但是我坚持使用一种方法从像 3x^1-2x^4 这样的字符串传递到像 0 3 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,但不幸的是,由于某种原因它似乎不起作用而且我无法弄清楚我的代码有什么问题? "Polynomial p (coefficients)" 最后似乎是空的。 也许是构造函数的问题?
Polynomial::Polynomial (const vector<double>& coeff)
: coeff(coeff)
{}
// Constructor from string.
Polynomial::Polynomial (const string& spoly) : spoly(spoly) {}
提前致谢!
是啊,最后我发现了问题所在。我在 Mac 上编译,但当我切换到 Linux 时,它工作得很好。所以, Mac 的解决方案是写
cout << endl;
在代码块的末尾。