2016-12-18 39 views
0

我目前工作的一個任務,我想辦法弄清楚輸出到一個文件,而無需使用文件ADRESS作爲函數的參數,因爲我不是很在行指針和我將要聲明的這個函數將在一個類中使用。但是,當我嘗試在我創建的新項目中構建示例函數時,出現錯誤「系統找不到指定的文件」。我試圖清理解決方案,然後重新構建它,構建失敗,當我嘗試運行時,我仍然遇到同樣的錯誤。這裏是我的功能簡化爲:該系統找不到指定的文件錯誤和ofstream的功能

#include <iostream> 
#include <fstream> 

using namespace std; 


int main() { 

    void Export(int data) { 
     ofstream out("structures_initial.txt"); 
     out << data << endl; 
     return; 
    } 

    for (int i = 0; i < 10; i++) { //I declared i's type but still the same 
     Export(i); 
    } 

    return 0; 
} 

我不知道是什麼原因導致這個錯誤,我在想,做我的功能導出有意義嗎?因爲我覺得,打電話的ofstream不應該試圖創造一個新的輸出文件,它應該打開當前和寫字,但因爲這個錯誤我無法檢查可能是因爲我做錯了什麼(擡頭此錯誤的互聯網上,有隻是有很多不同的原因,我無法修復,因爲我在代碼中看不到問題)。如果你能幫我解決這個問題,我會很高興。

+3

1)的功能,功能之內,如在你的例子說明,不在C++中受支持。 2)如果'ofstream'找不到文件 - 通常會創建它。 3)從VS內部運行項目時,運行可執行文件的位置與輸出目錄不同**。所以,您可能期望在錯誤的位置創建文件。 –

+1

要附加到文件:http://stackoverflow.com/questions/2393345/how-to-append-text-to-a-text-file-in-c – doctorlove

+0

因爲你在構建已經得到一個錯誤程序,你的編譯器設置可能有問題。 – tly

回答

0

你可以重新安排你的代碼具有的功能沒有定義爲主。 還告訴該文件追加如果這就是你想要的。否則它會破壞以前的內容,與您所說的相反,「調用ofstream不應嘗試創建新的輸出文件,並且應打開當前目錄並寫入」

ofstream將嘗試在當前目錄中打開 - 您可能沒有寫入權限。

#include <iostream> 
#include <fstream> 

using namespace std; 

void Export(int data) { 
    ofstream out("structures_initial.txt", std::ios_base::app); 
    out << data << endl; 
    return; 
} 

int main() { 
    for (int i = 0; i < 10; i++) { 
     Export(i); 
    } 
} 
+0

感謝您的解決方案,意識到我宣佈主功能是一個恥辱。它正在工作。我試圖在主程序之外執行函數聲明,並且在執行程序之後,程序沒有向輸出文件寫入任何內容。但是,當我使用ios_base :: app時它工作正常,但這是我在講座中沒有學到的東西。現在我查找了std :: ios_base :: app,這很有道理。但爲什麼不使用它在第一個地方工作? – morpheus

+0

您沒有提供足夠的信息 - 無法找到文件將取決於您如何/在哪裏運行代碼。 – doctorlove

+0

思考迭代器時,不應該但我很困惑,因爲這是我第一次看到這個。另外這是我的第一個文件輸出,包括轉讓,所以我假設不動迭代器總是會覆蓋第一個出來,但都不像有沒有在一開始的任何迭代器它沒有做任何事情。 – morpheus

0

你必須忘了使用的ios ::應用程序(追加)

#include <iostream> 
#include <fstream> 

using namespace std; 

void Export(int data) { 
    ofstream out("structures_initial.txt", ios::app); 
    out << data << endl; 
    return; 
} 

int main() { 



    for (int i = 0; i < 10; i++) { //I declared i's type but still the same 
     Export(i); 
    } 

    return 0; 
} 

欲瞭解更多信息,請參閱C++ Files and Streams

+0

感謝您的回答,doctorlove和你都很清楚地向我表明了這個問題。 – morpheus

相關問題