4
我在使此程序正常工作時遇到問題。該程序要求提出問題,然後將該問題寫入文件。然後它會問你是否要輸入另一個問題。如果你點擊'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();
}
它只是我的編譯器,或者當我設置選項來詢問您的代碼的另一個問題時,它會跳過它並再次丟棄菜單? – Lemurr
@PabloLemurr對不起,發佈了錯誤的代碼,只是更新了帖子。由於第一行被忽略,因此在運行時按Enter鍵。難以修復 – taocp
有一個修復...對於此修復:D 'if(question.length()> 0)cin.ignore(numeric_limits :: max(),'\ n');' 孩子們,不要在家裏嘗試。 –
Lemurr