У меня есть строка C++ в моем коде, который, как:Сумма всех целых чисел в строки C++
"1 2 3 4 5 6 7 8"
Я знаю, что строка состоит из целых чисел, разделенных пробелом полукокса. Как я могу их суммировать?
Я довольно C++ новичок и в Java я бы просто сделать:
String str = "1 2 3 4 5 6 7 8";
int sum = 0;
for (int i = 0; i < str.split(" ").length; i++ {
sum += Integer.parse(str.split(" ")[i];
}
Как я могу сделать так же, как это с моей строки объекта в C++?
Некоторые люди предложили мне stringstream
, но я до сих пор не могу понять этот объект, и мне нужно полностью прочитать строку, получая в ней каждую цифру.
Заранее благодарен!
Обновление: некоторые ребята хорошо пытались мне помочь, но все же это не работает. Возможно, из-за некоторой причуды моей проблемы, о которой я раньше не уточнил. Так вот он идет:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
freopen("variable-exercise.in", "r", stdin);
int sum = 0, start = 0;
string line;
while(getline(cin ,line)) {
istringstream iss(line);
while(iss >> start) {
sum += start;
}
cout << start << endl;
sum = start = 0;
}
return 0;
}
Ах, входной файл содержит следующее:
1
3 4
8 1 1
7 2 9 3
1 1 1 1 1
0 1 2 5 6 10
Таким образом, для каждой строки, программа должна напечатать сумму всех целых чисел в строке строки. Этот пример будет генерировать:
1
7
10
21
5
24
благодаря
В чем причина явного построения 'std :: string'? –
@ H2CO3: В частности, не было причин, я думал, что в какой-то момент OP может закончиться «строковым» объектом (возможно, каким-то образом сконструированным какой-то другой функцией) и хочет получить номера из него. –
ОК, вижу, спасибо. –