我遇到了來自fstream的getline指令的問題。 這是從我的代碼片段:getline返回空字符串
boolean_1=true;
while(true)
{
if(boolean_1)
{
//some stuff
}
else
{
save_file.open("save.txt", fstream::in);
//some stuff
save_file.close();
}
mission_file.open(filename, fstream::in);
mission_file.getline(buffer_line, 256);
//some other stuff
boolean_1=false;
save_file.open("save.txt", fstream::out);
//write something
save_file.close();
}
此代碼應打開mission_file它運行的第一次,並且在下次迭代打開保存文件。保存文件在每個週期結束時創建。 至少它應該像這樣工作。 因爲,第一次完美地工作,但在下一次迭代中,「mission_file.getline(buffer_line,256);」返回一個空行,導致程序崩潰。 另外,如果boolean_1以false開始,則循環將正常工作,直到下一個循環爲止。
我已經檢查過需要的「.txt」的存在,mission_file和save_file都返回is_open()true。
您似乎沒有檢查'getline'是否成功,可能是您想在到達最後一行後停止? – 2010-08-21 09:12:07
'getline'只有在我已經加載了一個mission_file時纔會失敗,完成所有的任務,然後在下一個週期開始時重新打開它。它不會失敗,當我第一次打開它時,我從這段代碼中省略了在EOF之前停止的代碼。 – Tibor 2010-08-21 09:26:00
如果您的代碼示例是完整且可編譯的(儘管最小),它將有很大幫助。現在我們可以看到你有一個名爲'mission_file'的變量,但是你沒有顯示它聲明的位置或方式,或者你執行的所有相關操作。 – 2010-08-21 09:30:55