4

このプログラムを正しく動作させるのに問題があります。プログラムは質問をし、その質問をファイルに書き込みます。次に、別の質問を入力するかどうかを尋ねられます。「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();

}
4

1 に答える 1