2013-03-02 270 views
2

我有一個名爲read.txt文件E:\My_project\dictionary database\read.txt它看起來像如何讀取和寫入文件

1245 
15 
12 
454564 
122 
.... 

我想逐行讀取read.txt線,並希望這些值保存到一個載體並最終輸出矢量,並將矢量的值寫入另一個名爲write.txt的txt文件,該文件的外觀與read.txt相同。我如何在C++中做到這一點?

我試圖從文件中讀取這樣的數值:

ifstream ifs("read.txt", ifstream::in); 

但我不明白的地方,以保持read.txt file.What應該read.txt和write.txt的位置? ?

編輯: 如果我使用矢量從文本IM保存輸入收到一個錯誤:

int textLine; 
    vector<int> input; 

    ifstream ifs("C:\\Users\\Imon-Bayazid\\Desktop\\k\\read.txt", ifstream::in); 

    if (ifs.good()) { 

     while (!ifs.eof()) { 
       getline(ifs, textLine); 
       input.push_back(textLine); 
     } 

     ifs.close(); 

    } else 
     cout << "ERROR: can't open file." << endl; 


     for(int i=0;i<input.size();i++) 
      cout<<input.at(i); 
+0

爲什麼您將** vector **標記添加到此帖子中?你應該用std :: vector對象做些什麼? – 2013-03-02 08:47:24

+0

試試'open'位的絕對路徑? – 2013-03-02 08:48:00

+0

..很高興幫助你們解決問題。你們每個人都得到一個。 – 2013-03-02 08:57:00

回答

1

由於文件的名稱被硬編碼爲"read.txt",因此文件必須與您的可執行文件位於同一文件夾中。如果該文件的位置不會改變,你可以硬編碼完整路徑:

ifstream ifs("E:\\My_project\\dictionary database\\read.txt", ifstream::in); 

(注意一倍反斜槓:這是針對C++編譯器把它們作爲普通斜線)。

ifstream ifs("E:\\My_project\\dictionary database\\read.txt", ifstream::in); 

或者你可以移動的可執行程序讀取在該文件同一目錄下的文件:

+0

我已編輯我的問題你能否看到這個回答? @dasblinkenlight – DarkenShooter 2013-03-02 09:15:22

+1

@ user2029069由於不能使用'getline(ifs,textLine);'來讀取'int',所以出現錯誤。你需要使用'ifs >> textLine'。我建議將'textLine'重命名爲更合適的內容,例如'intValue'。 – dasblinkenlight 2013-03-02 09:18:17

+0

如何將它寫入與read.text文件看起來相同的文件? – DarkenShooter 2013-03-02 09:21:44

1

如果你的二進制文件位於E:\My_project,那麼你需要調整你的文件的路徑開放至: ifstream ifs("./dictionary database/read.txt", ifstream::in);

請參閱this相關問題。

+0

我已編輯我的問題,你可以請看到這個回答? – DarkenShooter 2013-03-02 09:16:23

1

當你打開它,您可以給文件的絕對路徑。

編輯:

通過聲明你的載體是這樣的:vector<int> input;創建中,你只能存儲整型值的向量,但你是從文件(textLine)閱讀是一個字符串。如果您只想將文件中的數字解釋爲整數值,則必須使用

input.push_back(atoi(textLine.c_str())); 
+0

我已編輯我的問題,你可以請看到這個回答? – DarkenShooter 2013-03-02 09:15:46