このプログラムを正しく動作させるのに問題があります。プログラムは質問をし、その質問をファイルに書き込みます。次に、別の質問を入力するかどうかを尋ねられます。「1」を押すと、ループして別の質問を入力するよう求められます。プログラム自体は問題なく実行および終了します。問題は、入力した質問の数に関係なく、最初の質問のみがファイルに書き込まれることです。残りは空白行に置き換えられます。プログラムを閉じて再実行すると、やはり 1 行しか書き込まれません。cin.ignore が関係していると確信していますが、修正方法がわかりません。助けてください。
#include <iostream>
#include <fstream>
#include <limits>
#include <string>
using namespace std;
int main ()
{
string question;
int x;
ofstream a_file("test.txt",ios::app);
do
{
cout<<"Enter a question:\n\n";
getline(cin,question);
a_file<<question<<"\n";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout<<"Would you like to enter another question?\n";
cout<<"1 for yes. 2 for no: ";
cin>>x;
}
while (x!=2);
a_file.close();
cout<<"\nYour submition has been saved. Have a nice day!\n";
cout<<"Press enter to close the program.";
cin.ignore();
cin.get();
}