2010-11-02 68 views
0

我能夠寫入文本文件,然後使用getline,我不能再寫入文件。C++當我使用getline從文件讀取後,我不能再寫入到txt文件

#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

int main(){ 
ifstream infile; 
fstream crypto; 
ofstream hacker; 
string tempString; 
string tempString2; 
string plaintext; 
string line; 
string dec; 
. 
. 
. 
crypto<<"hello";//write some stuff to file here 
use getline(crypto, line, '\n') 
crypto<<"hi";//Doesnt write to file anymore. 
+0

我認爲問題與嘗試從文件同時讀取和寫入有關。如果這不是錯誤,則錯誤將出現在getline中,以及您如何使用。 – Jim 2010-11-02 03:05:23

回答

0

這是一個有點難以從代碼中看到的是(試行每行後返回),但我想你已經設置的文件訪問閱讀。

0

文件已進入錯誤狀態。

一旦文件處於錯誤狀態,所有io操作將被忽略,直到您重置錯誤狀態。所以基本上上面說明了getline操作在某種程度上失敗了。

2

文件具有單個錯誤狀態和共享文件位置指示器,用於讀取和寫入操作。

如果設置了錯誤狀態,那麼讀取和寫入操作都不會在文件上成功。讀取文件末尾是一種會導致錯誤狀態被設置的觸發器,在這種情況下,直到文件位置指示符重新定位到文件邊界內爲止。

由於閱讀和寫作都只有一個位置指示器,因此每次在讀取和寫入同一文件之間進行切換時,都需要重新定位該指示器,以確保您正在打算的位置執行下一個操作它發生。