C++系統IO
頭文件的使用
1.使用系統IO必須包含相應的頭文件,通常使用#include預處理指令。
2.頭文件中包含了若干變量的聲明,用于實現系統IO。
3.頭文件的引用方式有雙引號和尖括號兩種,區別在于查找路徑的不同。
4.C++標準庫提供的頭文件通常沒有后綴,如iostream。
注意:引用頭文件時尖括號(c++標準庫提供的頭文件)和雙引號(用戶自定義的頭文件)的區別
main.cpp
#inlcude <iostream> //系統從環境變量去尋找頭文件
#inlcude "myheader.h" //雙引號的頭文件,系統會在此文件的同級目錄中尋找該頭文件
輸入輸出流
iostream :標準庫所提供的 IO 接口,用于與用戶交互
– 輸入流: cin ;輸出流: cout / cerr / clog
– 輸出流的區別: 1. 輸出目標; 2. 是否立即刷新緩沖區
– 緩沖區與緩沖區刷新: std::flush; std::endl
如果程序崩潰,緩沖區中的內容會被回收,為了防止被回收,可以及時刷新緩沖區
std::flush:是一個用于刷新輸出流緩沖區的操作符。當調用std::flush時,它會立即將輸出流緩沖區中的數據發送到對應的輸出設備(如控制臺或文件),而不管緩沖區是否已滿。
std::endl:它不僅具有刷新緩沖區的功能,還會在輸出流中插入一個換行符\n 。
頻繁刷新緩沖區主要存在以下缺點:
性能降低:刷新緩沖區會涉及數據的傳輸和磁盤 I/O 操作(如果輸出到文件),頻繁進行這些操作會增加系統開銷。例如在一個循環中頻繁使用std::endl輸出數據,每次都刷新緩沖區,相比只在循環結束后刷新,會消耗更多時間在數據傳輸和 I/O 操作上,導致程序整體運行速度變慢。
資源浪費:頻繁的刷新操作意味著頻繁地訪問輸出設備(如顯示器、磁盤等),這會加速設備的磨損。對于磁盤這種有機械結構的存儲設備,頻繁的寫入操作會影響其使用壽命。同時,每次刷新都需要系統分配資源來處理數據傳輸,過多的資源消耗可能會影響其他程序或系統進程的正常運行。
C / C++ 系統 IO 比較
– printf: 使用直觀,但容易出錯
– cout: 不容易出錯,但書寫冗長
– C++ 20 格式化庫:新的解決方案