[問題] C++如何用ofstream輸出時,回到上一行添 …

看板C_and_CPP (C/C++)作者 (ninE)時間15年前 (2011/06/12 17:35), 編輯推噓2(208)
留言10則, 4人參與, 最新討論串1/1
我用ofstream輸出到一個文件檔 假設目前輸出情況是 : HCOPY 00100000107A (line 1) T0010001410334820390010362810303010154820613C100300102A0C103900102D (line 2) T001003 (line 3) 目前在line 3 如果我想要回到上一行(line 2)補上文字 變成 HCOPY 00100000107A (line 1) T001000**1410334820390010362810303010154820613C100300102A0C103900102D (line 2) T001003 (line 3) ^^ 像這樣回去插入文字 接著再回來原本的地方繼續輸出 另外我每一行的長度是不固定的 請問該如何做呢 感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.118.42.38

06/12 17:38, , 1F
恐怕有點困難 可能會覆寫原來的資料...
06/12 17:38, 1F

06/12 17:40, , 2F
有辦法用memory去保存所有要輸出的資料嗎?
06/12 17:40, 2F

06/12 17:41, , 3F
真的要做插入就得把之前的往後移才行
06/12 17:41, 3F

06/12 18:50, , 4F
畢竟對電腦來講檔案的性質有點像"存在磁碟上的陣列"
06/12 18:50, 4F
剛好我要插入的是固定兩個字元而已 所以我可以先行放置兩個空白字元 那麼要如何去回頭去覆蓋 , 接著回來原來位置呢?

06/12 19:44, , 5F
可以這麼做 接著搭配seekp 與tellp就可以了
06/12 19:44, 5F
再請問如果p要移動到上一行的第8個字元,要如何知道該往前移動幾格呢?

06/12 21:39, , 6F
痾你有看懂seekp 與tellp嗎?
06/12 21:39, 6F

06/12 22:01, , 7F
你可以在印出空白前先用變數存tellp
06/12 22:01, 7F

06/12 22:02, , 8F
到你要跟改的時候 再用seekp跳躍(記得要儲存當下的位置
06/12 22:02, 8F

06/12 22:04, , 9F
因為還要跳回來) 所以在印完之後再跳回來即可
06/12 22:04, 9F
終於了解了!一心只想著回頭插入時用來搜尋,原來是用來事先儲存位置. 感謝感謝

06/13 13:10, , 10F
是貝殼書 XD
06/13 13:10, 10F
嗯嗯嗯嗯 ※ 編輯: ninEEE 來自: 220.130.211.19 (06/13 21:26)
文章代碼(AID): #1Dz8XUm5 (C_and_CPP)
文章代碼(AID): #1Dz8XUm5 (C_and_CPP)