Для моей программы мы должны прочитать текстовый файл и распечатать его на экране. В текстовом файле сообщение может выглядеть так:Пропуск строки с getfile
#email
mailservice
birdman
Intro
Hello Birdman! Welcome!
#email
Frank
birdman
Hello
Hello Birdman, how are you?
мне нужно пропустить через #email так, что он печатает как:
From: mailservice
To: birdman
Subject: Intro
Message: Birdman! Welcome!
From: Frank
To: birdman
Subject: Hello
Message:Hello Birdman, how are you?
Это код, который у меня есть:
std::string filename1 = GetInboxFile(username);
std::ifstream fin(filename1);
std::string word;
std::cout << "\n";
std::string formatted = FormatEmailString("From: ", "To: ", "Subject: ", "Message: ");
//FormatEmailString is a function
std::cout << formatted;
while (fin.eof() == false)
{
std::string line = GetLine(fin);
if (fin.eof() == false)
{
std::cout << line << std::endl;
}//END IF STATEMENT
}//END WHILE LOOP
std::cout << std::endl;
fin.close();
Использование 'stream.eof()' как единственного условия всегда неверно. Вам всегда нужно проверить показания _after_, чтобы определить, было ли чтение успешным. –
Кажется, что код по-прежнему использует 'fin.eof()' для проверки, а не проверки того, был ли вход успешным, который выполняется с помощью 'if (fin)'. Хотя строка чтения не имеет причин сбоя, кроме конца файла, другие операции ввода могут завершиться неудачей, не устанавливая значение 'fin.eof()' на 'true'. –
Хорошо, я понимаю. Теперь нормально? – CoderPi