istringstream не проходит всю строку
Суть алгоритма: std::istringstream
(как я понимаю) сам автоматически отсекает пробелы, оставляя число. Это число заносится в массив. Суть в том, что istringstream
считывает число 30, и дальше считывание не идет, просто увеличивается индекс.
Код:
int *timeLine = new int();
std::string sLine = "";
std::string tLine = "";
std::string lastZero = "";
int indexNumber = 0;
std::ifstream infile(argv[1]);
while (sLine != "0 0 0")
{
int temp = 1;
getline(infile, sLine);
std::istringstream stream (sLine);
lastZero = sLine[sLine.length() - 2];
lastZero += sLine[sLine.length() - 1];
std::istringstream tStream (tLine);
if ((sLine != "0 0 0") && lastZero == " 0") {
tLine = tLine + " " + sLine;
std::cout << tLine << "\n";
while (temp != 0) {
tStream >> temp;
if (temp != 0) {
timeLine[indexNumber] = temp;
indexNumber++;
}
}
} else {
tLine = tLine + " " + sLine;
std::cout << tLine << "\n";
}
}
Вид текста в файле:
19 20
30
25 35 0
0 0 0
Результат сложения строки во время чтения файла:
19 20 30 25 35 0
0 - конец строки. Потом сам алгоритм добавления каждого числа в массив.
Обновление
timeLine
- динамический массив. Есть строка, которая заканчивается нулем. Но бывают варианты, когда строка (в файле) разбита на подстроки, как показано "Вид текста в файле". С этой белеберды я создаю одну цельную строчку (вместе с нулем), показано на "Результат сложения". Теперь прохожусь стрингстримом и считываю числа в массив. Но стрингстрим почему-то останавливается на числе 30 и дальше числа не считывает, и они, естественно, не попадают в массив. Приложение тупо висит, типа что-то там себе считывает.
Вот и не могу понять, почему так происходит. Стрингстрим сам удаляет пробелы. Пробелов между числами может быть несколько. Но на работу не влияет.