目前,我正在一个项目中(即创建一个多项式的类),并且我已经实现了“加减乘除法”方法。但是我一直坚持从3x ^ 1-2x ^ 4这样的字符串传递到像0 3 0 0 4这样的系数 vector 的方法。
所以这是代码:
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;
在代码块的末尾。