Я работаю над функцией FileReader, которая выполняет определенную функцию в зависимости от строки.
Однако последняя строка файла, который я хочу прочитать, по какой-то причине всегда пуста, и это портит мою программу.
Есть ли способ, которым я могу сказать программе, чтобы остановить в этой точке?
При попытке запустить его, я получаю следующий вывод
Стартовая программа:
прекращение вызова после выброса экземпляра ‘std :: out_of_range’
что (): basic_string :: substr
— — 1 1 Прервать
И я знаю, что это из-за этой пустой строки, так как я сказал программе, чтобы она получала конкретные элементы в каждой строке, и эти элементы равны нулю в этой строке.
Из того, что я понимаю, у вас есть что-то вроде этого:
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
}
Если это не сработает, это потому, что я неправильно понял ваш вопрос, и в этом случае, пожалуйста, предоставьте более подробную информацию.
Других решений пока нет …