Хочу сделать сумму n-чисел c n-строк(с переводом с string в int с помощью stringstream),но в переменную d постоянно записывается только первое число

{
int n, i, q=0, d = 0,f=0;
string s;
stringstream ss;
inf >> n;
getline(inf, s);
for (i = 1; i <= n; i++) {
    getline(inf, s);
    ss << s;
    ss >> d;
    q = q + d;
}
outf << q << endl;

} //пример input (каждое число с новой строки) 5//число n строк 11 12 13 14 15 output: 55(5 раз добавило 11)


Ответы (1 шт):

Автор решения: Harry

Ну, раз уж так надо - то сначала все запишите, а потом читайте... Примерно так:

ifstream inf("data");
stringstream ss;
int n, q = 0;
string s;
inf >> n;
getline(inf, s);
for(int i = 1; i <= n; i++)
{
    getline(inf, s);
    ss << s << " "; // Лучше добавить пробел, чтоб числа не сливались
}
for(int d, i = 1; i <= n; i++)
{
    ss >> d;
    q = q + d;
}
cout << q << endl;

Ну, или так:

ifstream inf("data");
int n, q = 0;
string s;
inf >> n;
getline(inf, s);
for(int d, i = 1; i <= n; i++)
{
    stringstream ss;
    getline(inf, s);
    ss << s << " ";
    ss >> d;
    q = q + d;
}
cout << q << endl;
→ Ссылка