我遇到麻煩ofstream
,這是 - 當我這樣我如何合法更改ofstream對象的文件名值?
ofstream o_save;
/*code*/
o_save = ofstream(filename); //Problem is here
改變ofstream
對象的價值... ...線之上徹底刪除文件的內容。
問題是我該如何合法改變filename
值ofstream
的對象?
P.S.我不能在聲明它時定義它,因爲我希望它是全局的,我不確定我選擇了哪個保存文件。
我遇到麻煩ofstream
,這是 - 當我這樣我如何合法更改ofstream對象的文件名值?
ofstream o_save;
/*code*/
o_save = ofstream(filename); //Problem is here
改變ofstream
對象的價值... ...線之上徹底刪除文件的內容。
問題是我該如何合法改變filename
值ofstream
的對象?
P.S.我不能在聲明它時定義它,因爲我希望它是全局的,我不確定我選擇了哪個保存文件。
這個問題非常模糊和矛盾,而且OP在提問後似乎已經睡了。所以我會試着偷看他的頭,並試圖闡述他想要的東西。
對於打開文件,有很多modes。像這樣打開它。
ofstream o_value ;
o_value.open("file.txt") ;
如果你想保留的該文件,使用原始內容..
o_value.open("file.txt", ios::app) ;
如果要稍後將其關閉,並打開一個又一個,關閉使用...
o_value.close() ;
在ofstream
的情況下,通常不允許使用文件名的鏈接。您可以使用<cstdlib>
的rename
。您可以通過<cstdio>
中的remove("file.txt")
刪除文件。
Allrightey,謝謝大家。 – user1849353
的ofstream
沒有某種抽象name
屬性,名字只是一個參數,它的一些成員函數,在這個意義上詢問如何
變化
filename
值ofstream
對象來
是沒有意義的。
一般而言,您可以使用std::rename
從<cstdlib>
重命名文件或使用Boost.Filesystem。
對於ofstream
對象的「更改名稱」是什麼意思? 對象具有的唯一「名稱」ofstream
變量的名稱是 變量。一個ofstream
對象是一個數據流。您可以(在 某些系統上)更改它所關聯文件的名稱, 使用rename
,但不知何故,我不認爲這就是您想要的 。您也可以關閉該流,然後在另一個 文件中重新打開該流。
您不能在iostream對象之間分配。如果更糟的是 更糟糕,你可以聲明全局對象爲指針,並且 分配給它(使用*o_save
來寫入)。
最後,標準說當你打開一個ofstream
時,你的 會截斷該文件(如果存在的話)。如果這不是你想要 要做的事情,那麼你必須添加一些標誌到打開模式。例如,如果你加入,你將不再使用 來截斷文件,並且所有的寫操作將會到達文件末尾 (如果系統支持,則是原子的)。或者(雖然 相當令人驚訝),您可以將std::ios::in
添加到標誌; 如果該文件不存在,這將失敗,但會允許在文件的任何位置寫入 。如果您想要寫入文件中的任何位置,即使您不想讀取文件,也可以使用這種方法打開 文件的唯一方法即 。
使用'o_save.open(「file.txt」,ios :: app)'打開並使用'o_save.close()'關閉。之後打開另一個。 –
只要打開一個文件來寫就不應該「完全擦除文件的內容」。它只是打開文件,所以你可以覆蓋它的內容。如果你想附加到文件,然後更改[打開模式](http://en.cppreference.com/w/cpp/io/ios_base/openmode)。 –
另外,打開文件後,不能簡單地「更改文件名」。看起來你不得不多想一點關於我們程序的設計,以及你想用它來完成什麼。 –