C 流的拷貝

2021-10-03 12:10:23 字數 501 閱讀 3973

遇到乙個優點意思的**段:

#include #include std::ofstream make_stream()

int main()

返回乙個ofstream物件,是否意味著拷貝乙個檔案輸出流物件?流物件的拷貝意味著什麼?考慮作業系統的檔案,讀寫檔案涉及到緩衝區重新整理和偏移量變化等問題。ofstream物件可以理解為封裝了檔案控制代碼(我們通過作業系統的檔案控制代碼訪問檔案)的東西,當我們由ofstream a拷貝出另乙個ofstream b=a;如果設計成共享相同的檔案控制代碼,則面臨狀態變化同步的難題。如果設計成b重新開啟乙個檔案,則明顯與拷貝語義不符。所以最終設計決策是,流不能拷貝。

**段中的返回臨時物件ofsteam是否意味著拷貝呢?實際上c++11開始,支援move copy,move語義有轉移所有權的意思。函式內的那個std::ofstream out物件被掏空了。

這段**還告訴我們另乙個意思,如果要複製乙個流,只需要複製三個東西:格式化設定,錯誤狀態位,流緩衝。

IO流實現檔案的拷貝

以記憶體為參考 字元流 對應的父類 字元讀入流 將資料輸入記憶體 reader 字元寫出流 將資料從記憶體取出 writer 先處理字元流 例項 以磁碟的儲存為例,將內容寫入檔案 public static void main string args throws ioexception publi...

io流的檔案拷貝方法

使用fileinputstream,fileoutputstream 完成檔案的拷貝 複製。在拷貝的過程中應該是一邊讀一邊寫的 使用以上位元組流進行檔案的拷貝時候,檔案的型別隨意,什麼型別的檔案都可以拷貝 public class copy catch filenotfoundexception e...

JAVA基礎(字元流拷貝)

1,字元流的拷貝功能 簡單複製功能 filereader fr new filereader a.txt filewriter fw new filewriter b.txt int ch while ch fr.read 1 fr.close fw.close filewriter 關流注意事項 ...