從舊blog轉移過來的。
前些日子寫數據庫實驗的時候,為了這些知識沒少頭疼過,基礎貧弱啊。
ios::app: 以追加的方式打開文件?
ios::ate: 文件打開后定位到文件尾,ios:app就包含有此屬性?
ios::binary:? 以二進制方式打開文件,缺省的方式是文本方式。兩種方式的區別見前文?
ios::in: ?文件以輸入方式打開?
ios:out: 文件以輸出方式打開?
ios::nocreate:?不建立文件,所以文件不存在時打開失敗 ?
ios::noreplace:不覆蓋文件,所以打開文件時如果文件存在失敗?
ios::trunc: 如果文件存在,把文件長度設為0
說下某些地方用過之后的驚奇吧(說驚奇其實只是自己之前把知識理解歪了而已)。
ios::app,該模式只能把數據添加到文件的尾部,如果想修改別的地方是不行的,因為seekp()根本不起作用,指針總是指向末尾,而我之前一直誤解該模式等價于ios::out | ios::nocreate。
ios::in | ios::app,也是拜對ios::app的錯誤理解所賜,居然認為這是ios_in | ios_out,結果數據庫的文件是越寫越長,自己還一愣一愣的。
ios_binary,感覺只是一個表達指示作用,事實上,用read,write方法的話,都是進行二進制操作的。不過可能添加這個指示的話,會有優化作用?沒校驗過。
終于明白ios_binary的意義了,如果操作的真的是二進制文件,那么就一定要指定它。我今天操作一個文件時沒有指定它,結果寫進去的buffer是一行一行的,因為buffer的最后一個是換行符。后來指定為binary之后,寫入的內容終于連續了。
posted on 2006-05-29 16:45
LOGOS 閱讀(5536)
評論(3) 編輯 收藏 引用