从一个整数中转换一个字符串是不行的,哪里出错了?

时间:2017-03-11 03:51:11

标签: c++

我似乎无法弄清楚导致问题的原因。我希望程序从文件中读取数字列表,打印出列表,然后总计所有数字,但是当我尝试查找总数时,我无法将字符串值转换为整数值

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    int total = 0;
    string line;
    ifstream myfile;
    myfile.open("random.txt");
    while (getline(myfile, line)) {
        cout << line << endl;
        total = total + static_cast<int>(line);
    }
    cout << total;
}

2 个答案:

答案 0 :(得分:1)

你可能想要

total = 0;
for (int i = 0; i < line.length(); ++i) {
  total = total + static_cast<int>(line[i]);
}

编辑: 我误解了这个问题。以下代码应该有效。 输入文件是

11 22

10

,结果是43。

 #include <iostream>
 #include <fstream>
 #include <sstream>
 using namespace std;

int main()
{
    int total = 0;
    string line;
    ifstream myfile;
    int line_int = 0;
    myfile.open("random.txt");

    while (getline(myfile, line)) {
      cout << line << endl;
      istringstream iss(line);
      while(iss >> line_int)
        total = total + line_int;
    }
    cout << total;
}

答案 1 :(得分:1)

如果您使用的是C++ 11,请尝试stoi

total = total + stoi(line);