該博客用於記錄自己在閱讀過程中不懂的知識點,很少用到但比較重要的知識點以及模棱兩可的知識點
IO庫條件狀態。
使用流之前應檢查其狀態
數據的讀寫會用到一個叫緩衝區的東西,當你打印一個字符串時,有可能會立即打印也有可能會寫進緩衝區,隨後再打印,緩衝區刷新(即數據真正的寫入文件或者輸出設備)的原因:
程序正常結束時,mian函數的return。
緩衝區滿
endl,flush,ends
使用unitbuf設置流的操作不使用緩衝區,該流的所有操作都立即刷新緩衝區,使用方法:
cout << unitbuf; 取消的方法: cout << nounitbuf;
流之間存在關聯關係,默認情況下,cin和cerr都關聯到cout,執行cin和cerr時會刷新cout的緩衝區
程序崩潰並不會刷新緩衝區
使用tie關聯輸入輸出流
文件模式:
in //讀文件
out //寫文件
app //每次寫操作前定位到文件末尾
ate //打開文件後立即定位到文件末尾
trunc //截斷文件(清空已存在的文件流)
binary //二進制方式進行IO
out模式打開文件會清空數據,避免的方法是加上app或者in模式
每次調用open打開文件時都會確定文件模式
如果遇到需要處理一行數據而恰好一行數據中包含多個字符串時,可以使用istringstream和ostringstream