Каждая строка моего файла состоит из неизвестного количества целых чисел, разделенных пробелами. Я хотел бы читать в каждой строке как вектор этих целых чисел.
Вот пример такого файла:
11 3 0 1
4 5 0 3
2 3 4 1
23 4 25 15 11
0 2 6 7 10
5 6 2
1
11
Мне удалось успешно прочитать небольшие объемы данных, используя следующий метод (обратите внимание, что external_layers — это вектор, содержащий эти векторы, которые я пытаюсь заполнить):
for (int i = 0; i < outer_layers.size(); i++)
{
while (in >> temp_num)
{
outer_layers[i].inner_layer.push_back(temp_num);
if (in.peek() == '\n')
break;
}
}
Однако, когда я пытаюсь читать большие объемы данных, иногда они читаются в две строки под одним вектором. В одном из файлов из 24 строк он дважды читал двухстрочные строки, поэтому последние два вектора не имели данных.
Я не могу уложить это в голове. Любые идеи, что я делаю неправильно?
EDIT: Что-то интересное, что я заметил в некоторых строках файла создателя проблем, это:
Допустим, есть три строки.
23 42 1 5
1 0 5 10
2 3 11
Строка №1 прекрасно читается как 23 42 1 5
; однако строки № 2 и № 3 читаются вместе как 1 0 5 10 2 3 11
.
В Notepad++ они выглядят нормально, каждый на своей строке. Однако в Блокноте они выглядят так:
23 42 1 51 0 5 10 2 3 11
Если вы заметили, 5
(последнее целое число в строке №1) и 1
(первое целое число в строке №2) не разделены пробелами; однако 10
и 2
разделены пробелом.
Я заметил такое поведение на любых строках с двойным считыванием. Если они разделены пробелом, то они оба считываются. Не уверен, почему это происходит, учитывая, что там все еще должен быть символ новой строки, чтобы Notepad ++ отображал на отдельных строках, я прав?