2014-04-06 79 views
1

我想從用戶單詞中獲取並放入文件中的certian單詞。 我有getline的問題。 在新文件中,我沒有任何新行。 當我添加新行,而我寫入文件的字符串,該行被讀取兩次,的writeTo文件時間(我認爲這bcoz我看到這個newfile中)讀取文件的文件C++

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

int main() 
{ 
    string contain_of_file,bufor,word,empty=" ",new_line="\n"; 
    string conection; 
    string::size_type position; 
    cout<<"Give a word"; 
cin>>word; 
ifstream NewFile; 
ofstream Nowy1; 
Nowy1.open("tekstpa.txt", ios::app); 
NewFile.open("plik1.txt"); 
while(NewFile.good()) 
{ 
    getline(NewFile, contain_of_file); 
    cout<<contain_of_file; 

    position=contain_of_file.find("Zuzia"); 
    if(position!=string::npos) 
    { 
    conection=contain_of_file+empty+word+new_line; 
    Nowy1<<conection; 
    } 
    Nowy1<<contain_of_file; 

} 
Nowy1.close(); 
NewFile.close(); 

cin.get(); 
return 0; 
} 

回答

0

這裏的問題是不是你的閱讀。直接,但關於你的循環

不要循環while (stream.good())while (!stream.eof())。這是因爲eofbit標誌在之後沒有設置,直到之後,您嘗試從文件之外讀取。這意味着循環將重複一次額外的時間,並且您嘗試從文件中讀取,但std::getline調用將失敗,但您沒有注意到它,只是繼續,就好像沒有任何事情發生一樣。

而是做

while (std::getline(NewFile, contain_of_file)) { ... } 

而且不相關的提示:不需要變量conection,可以改爲做到這

Nowy1 << contain_of_file << ' ' << word << '\n'; 
+0

當我改變循環一段時間,我有更壞的文件。現在某些單詞會消失,而不是用戶添加單詞。並且它也不是Newline ... – user3164700

+0

@ user3164700循環條件應該是正確的,現在您需要使用調試器來查明循環內有哪些其他問題。 –

+0

因此,循環中的這個表達式會執行getline並將其添加到contains_of_file中,並且如果此循環看到文件的結尾只是結束工作,那麼我是對的? – user3164700