То, как вы пытаетесь объединить вопросы и ответы в отдельные строки, не будет работать, они будут перезаписаны с помощью вызова getline ().
while (another_question != "no");
Приведенная выше строка считается плохой практикой, вы должны использоватьболее подходящий тип как условие цикла, а также точка с запятой.
Вот пример кода, который намного лучше и даст желаемые результаты.
// You want to append any changes to the file, for example
// in the case of re-using the program.
File.open( "exam.txt", std::ios::app );
while( AnotherQuestion ) {
printf( "Please enter a question:\n" );
std::getline( std::cin, Buffer );
File << Buffer << std::endl;
printf( "Please enter an answer:\n" );
std::getline( std::cin, Buffer );
File << Buffer << std::endl;
printf( "Would you like to add another question? (Yes/No)\n" );
std::getline( std::cin, Buffer );
// You want to be able to receive input regardless of case.
std::transform( Buffer.begin( ), Buffer.end( ), Buffer.begin( ), ::tolower );
AnotherQuestion = Buffer.find( "yes" ) != std::string::npos;
}
Другой подход, который вы можете использовать, - создать класс, содержащий вопросы и ответы, а затем сохранить входные данные в std :: vector, который будет записан в файл в конце.Просто о чем подумать: -)