2012-08-08 151 views
0

我正在寫一個C++代碼,其中我動態地創建了一個字符串數組。我寫了函數來輸出字符串數組中的項目數以及數組本身。接下來我想做的是將數組的元素存儲在文本文件中,但是當我打開已寫入的文件時,只有數組的最後一個元素出現。下面是我在做什麼的樣本:字符串輸出文件的數組

int num_elem = ReadNumElem(); // my function that gets the number of elements in the array of strings 

string *MyStringArray = ReadNames(num_elem); // my function that reads a file and outputs the necessary strings into the array 

for(int i = 0; i < num_elem < ++i) { 
    ofstream ofs("C:\\Test\\MyStrings.txt") 
    ofs << MyStringArray[i] << endl; // I also tried replacing endl with a "\n" 
} 

我是新的C++,所以我道歉,如果這是太簡單了,但我一直在尋找了一段時間,現在,我似乎無法找到一個辦法。前兩個函數不相關,我只需要知道如何將數據輸出到文本文件中,以便所有數據都顯示出來,而不僅僅是數組中的最後一個元素。謝謝!

+0

簡單的答案是,你應該指定'的std ::的ios_base :: app'在你的'mode'參數傳遞給'ofstream'構造一個標誌,如 'std :: ofstream ofs(「C:\\ Test \\ MyStrings.txt」,std :: ios_base :: out | std :: ios_base :: app);' – oldrinb 2012-08-08 20:11:25

+0

從長遠來看可以幫助你的答案是在循環之外打開文件一次。 – oldrinb 2012-08-08 20:11:54

回答

1

您需要聲明該文件的循環

編輯


對不起,我不是故意的一個線接聽之外,但它已反正現在完成。

3

您每次在數組中打開文件並覆蓋其內容。

嘗試:

ofstream ofs("C:\\Test\\MyStrings.txt");  
for(int i = 0; i < num_elem < ++i) { 

    ofs << MyStringArray[i] << endl; // I also tried replacing endl with a "\n" 
} 
ofs.close();