Я работаю над домашним заданием, чтобы оценить выражение из файла, но по какой-то причине, когда я использую getline (имя файла, строковая переменная), строка имеет дополнительный ввод. Я знаю, потому что, когда я вывел строку, она пришла с новой строки. И когда я проверяю length () строки, она всегда на единицу больше, чем фактический размер строки, но я не могу избавиться от лишнего пространства в конце. Последняя строка во входном файле работает просто отлично, хотя я предполагаю, что у нее нет ввода в конце. Функция оценки просто оценивает строку. Проблема связана с моей функцией проверки ошибок, где обнаружение ошибок зависит от длины строки. Таким образом, он выводит «error», потому что он не работает с неверной длиной строки, которая на единицу больше, чем фактическая длина.
ifstream input("input31.txt");
string line;
if (input.eof()) {
cout << "is empty";
input.close();
}
else {
string line;
while (!input.eof()) {
getline(input, line);
cout << line.length();
}
}
input.close();
}
Я попытался определить, есть ли в строке '\ n', но он по какой-то причине не обнаружил. Простите, если я сделал глупую ошибку с этим, как я обычно делаю. Я все еще новичок в кодировании, и это помогает мне иметь дополнительные глаза.
edit: Вот ввод, который я использую.
0*00000000000000000+0000000000000001
(1+2)*(1000+2000)
(+1+2)*(1000+2000)
((1+2)*(1000+2000))*(1+10000)
(1000000000000000-1)
99999999999999999/99999999999999999
(-100000+10000)*8
((-1))-(-1)
edit: я тожеиспользуя xcode на Mac, если это имеет какое-либо значение.