В C++ я пытаюсь прочитать файл и сохранить строки из этого файла в строку в программе. Это отлично работает, пока я не доберусь до последнего слова, которое всегда хранится дважды.
ifstream inputStream;
string next = "";
string allMsg = "";
inputStream.open(fileName.c_str());
string x;
while (!inputStream.eof())
{
inputStream >> x;
next = next + " " + x;
}
cout << "The entire message, unparsed, is: " << next << endl;
Выполнение этого добавляет последнее слово или int из файла, который я открываю для следующего. Какие-либо предложения? Благодарю!
Это связано с тем, что когда вы читаете последнюю строку, она не устанавливает бит eof и бит сбоя, только когда вы читаете END, бит eof устанавливается, а eof()
возвращает true.
while (!inputStream.eof()) // at the eof, but eof() is still false
{
inputStream >> x; // this fails and you are using the last x
next = next + " " + x;
}
измените его на
while( inputStream >> x){
// inputStream >> x; dont call this again!
next = next + " " + x;
}
while (!inputStream.eof())
Должно быть
while (inputStream >> x)
eof() вернет true, если последнее чтение попало в конец файла, а не если следующее чтение попадет в конец файла. Пытаться:
ifstream inputStream;
string next = "";
string allMsg = "";
inputStream.open(fileName.c_str());
string x;
inputStream >> x;
if(!inputStream.eof()) {
do {
next = next + " " + x;
inputStream >> x;
} while (!inputStream.eof())
}
cout << "The entire message, unparsed, is: " << next << endl;
inputStream >> x;
внутри петли ...