1
說明:我有它的幾行文本文件,我想兩條線之間寫英寸開/ seekp /寫入截斷文件
我試過了:我有一個循環來決定我想要寫的位置。當我嘗試打開文件時使用seekp來定位輸入,然後寫入文件被截斷。
例
file.txt的:
Hello
Write under this line
Write above this line
代碼:
ofstream myfileo;
myfileo.open("file.txt");
cout<<myfileo.tellp()<<endl;//starts at 0
myfileo.seekp(26);//move to 26 ...End of second line
cout<<myfileo.tellp()<<endl;//says 26
string institution ="hello";
myfileo<<"\n"<<institution<<"\n";
myfileo.close();
問題:我不知道爲什麼該文件被截斷。我嘗試使用append,但不管它寫入底部是什麼使得,但我不知道我做錯了什麼。
感謝, JT
你怎麼知道的位置寫是26?您正在文本模式下打開文件,而不是二進制模式。因此,在文本文件中的位置26可能不會指向您認爲由於CR/LF轉換而指向的位置。 – PaulMcKenzie
我認爲這是它應該如何工作的。您需要閱讀該點之後的行,然後用它們寫入新行。 –
@PaulMcKenzie:點是它截斷文件。如果那個位置結果不正確,我可以找到解決這個問題的方法。我只是不明白我是怎麼想兩行之間的寫入,而無需加載整個生命到內存中,然後輸出回來......請告訴我,即使seekp的地步呢? –