【发布时间】:2020-10-08 00:46:51
【问题描述】:
我正在尝试使用字符串流来输出使用字符串流在标准输入的每一行中的整数之和。这就是我目前所拥有的
void sumvec(vector<int> v) {
int total = 0;
for (int i = 0; i < v.size(); i++) {
total += v[i];
}
cout << total << endl;
}
int main()
{
std::vector<int> v;
std::string line;
std::stringstream sstream(line);
int i;
while (getline(std::cin, line)){
while (sstream >> i) {
v.push_back(i);
}
sumvec(v);
}
}
我希望每一行都有自己的总和。但是当我这样做时,没有任何东西被返回到输出中。任何帮助将不胜感激。
【问题讨论】:
-
std::stringstream sstream(line);构造一个字符串流,当前内容为line。它不会在字符串流和line之间创建某种链接,因此如果您写入line,字符串流将自动更新。仅在需要时才声明变量,这样这样的错误就会减少。sstream应该在第一个 while 循环内。 -
了解如何使用调试器。当您使用调试器单步执行代码时,此类错误非常明显。
-
std::string line; while (getline(std::cin, line)) { std::stringstream sstream(line); while (sstream >> i) { ...
标签: c++ stdout stdin stringstream