Условие остановки, когда последняя строка файла пуста. Переполнение стека

Я работаю над функцией FileReader, которая выполняет определенную функцию в зависимости от строки.

Однако последняя строка файла, который я хочу прочитать, по какой-то причине всегда пуста, и это портит мою программу.

Есть ли способ, которым я могу сказать программе, чтобы остановить в этой точке?

При попытке запустить его, я получаю следующий вывод

Стартовая программа:
прекращение вызова после выброса экземпляра ‘std :: out_of_range’
что (): basic_string :: substr
— — 1 1 Прервать

И я знаю, что это из-за этой пустой строки, так как я сказал программе, чтобы она получала конкретные элементы в каждой строке, и эти элементы равны нулю в этой строке.

0

Решение

Из того, что я понимаю, у вас есть что-то вроде этого:

std::ifstream file("file.txt");
std::string line;
while(getline(file,line)) {
//read the line
}

Я также понимаю (поправьте меня, если я ошибаюсь), что в конце вашего файла у вас есть ДВА новых строки, например:

line1\nline2\n\n

Если это так, то тело цикла while наверняка будет выполнено в одной пустой строке в конце. Чтобы обойти это, просто игнорируйте пустую строку:

while(getline(file,line)) {
if (line == "") continue;
//read the line
}

Если это не сработает, это потому, что я неправильно понял ваш вопрос, и в этом случае, пожалуйста, предоставьте более подробную информацию.

1

Другие решения

Других решений пока нет …