Я пытаюсь понять, почему это сломалось сейчас, потому что я работал, и я не уверен, что не так. Я пытаюсь получить простой getline из файла, который был открыт, однако компилятор продолжает давать мне ошибки. Я пробовал найти кого-то другого с этими проблемами, но я не смог найти кого-то еще с этим. Любой совет?Проблема Getline с открытым файловым потоком
void Foo::bar(ifstream &inputFile)
{
// Read in the data, parse it out, and
// call loadQueue
string input;
do {
getline(inputFile, input);
loadQueue(input);
}while (!(inputFile.eof()));
}
Вот что я получаю в ответ:
g++ -c -o Airworthy.o Airworthy.cpp
Foo.cpp: In member function ‘void Airworthy::readData(std::ifstream&)’:
Foo.cpp:25:27: error: no matching function for call to ‘getline(std::ifstream&, std::string&)’
Foo.cpp:25:27: note: candidates are:
In file included from /usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.2/../../../../include/c++/4.7.2/string:55:0,
from /usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.2/../../../../include/c++/4.7.2/bits/locale_classes.h:42,
from /usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.2/../../../../include/c++/4.7.2/bits/ios_base.h:43,
from /usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.2/../../../../include/c++/4.7.2/ios:43,
from /usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.2/../../../../include/c++/4.7.2/ostream:40,
from /usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.2/../../../../include/c++/4.7.2/iostream:40,
Любые идеи о том, что проблема?
В дополнение к тому, что сказал Энди, вы, вероятно, будете «loadQueue» вызываться для последней строки вашего файла дважды. Измените свой цикл на 'while (getline (inputFile, input)) {loadQueue (input); } '. –
Пожалуйста, покажите нам полное сообщение об ошибке. И для разработки на sftrabbit 'eof()' не возвращает true, когда больше нет ввода, он возвращает true только после того, как * операция ввода уже завершилась с ошибкой из-за eof. – Potatoswatter
@Potatoswatter Или нет. Проблема в том, что вход _until_ не удался, 'eof()' может или не может возвращать 'true'. Прочитав последнюю строку (или последний вход, независимо от того, что она есть), 'eof()' может возвращать либо 'true', либо' false'; вы не можете быть уверены в этом. –