2013-07-25 115 views
1

我是linux新手,我想創建一個文件並寫入一些內容。在linux中創建文件

我沒有得到任何錯誤,但代碼沒有創建任何文件...我錯過了什麼?

#include <iostream> 
#include <fstream> 

int main(){ 
    std::ofstream out("/Home/peter/Dropbox/C++/linux/data.dat", std::ios::out | std::ios::binary); 
    if(!out) 
     std::cout << " File isn't open\n" << std::endl; 
    char s = 'a'; 

    for(int i = 0; i<100; i++) 
     out.put(s); 

    return 0; 

} 
+10

這是'/ home/...'不是'/ Home/...' – Adam

回答

6

您應該將out.close()添加到程序的末尾。這將刷新寫入緩衝區以確保寫入緩衝區正確寫入。

另外,請確認您確實擁有(相當於您的程序有)在該目錄中創建和寫入文件的權限。

最後,確保您寫入的路徑實際上是正確的。正如@Adam在評論中指出的那樣,您可能打算使用/home/...而不是/Home/...

+0

呃,大寫是問題!謝謝! :) – erbal

+0

'close'將確保流被刷新,但文件實際上是在打開時創建的。 – hobbs

2

我複製並粘貼了該腳本,但更改了路徑併成功執行了代碼。在完成文件關閉流之後,我建議使用out.close()

你也可以使用流運營商的文件寫出來:

for(int i = 0; i < 100; i++) 
    out << s; 
1

變化out.put(s);out << s;

其次,一旦你做了處理文件和流的,它是一個很好的做法,關閉他們。它可以防止不必要的內存泄漏。所以在返回之前或者當您完成文件的處理時,請放入out.close()