我正在尝试读取数据并解决简单的问题data:

3               - number of lines to read in
1 1
2 2 2
3 4

输入每行后,我想获得输入的数字的总和,但是每行中的整数数是未知的。使用完以上数据后,屏幕应如下所示:
3
1 1
Sum: 2
2 2 2
Sum: 6
3 4
Sum: 7

但是从我的算法中,我得到了输出:
3
1 1
Sum: 1
2 2 2
Sum: 4
3 4
Sum: 3

我已经编写了代码,但是无法正常工作(如上所述):
EDITION
我改进了我的代码,并且知道它在没有字符串等的情况下也可以正常工作,下面是正确的代码:
#include<iostream>
using namespace std;
int main()
{
    int x;
    int t, sum;
    cin >> t;

    for(int i=0; i<t; i++) {
        sum=0;
        while(true)
        {
            cin >> x;
            sum = sum + x;
            if(cin.peek()=='\n')
                break; //conditional break
        }
        cout << "Sum: " << sum << "\n";
    }
    return(0);
}

最佳答案

使用getline一次将一行读入std::string类型的对象。然后使用该std::string对象初始化std::istringstream类型的对象,并使用提取器从流对象中读取int值,直到失败。然后返回并阅读下一行。大致:

std::string line;
while (std::getline(std::cin, line)) {
    std::istringstream in(line);
    int sum = 0;
    int value = 0;
    while (in >> value)
        sum += value;
    std::cout << sum << '\n';
}

09-07 03:18