c++語言不直接處理輸入輸出,而是通過一簇定義在標準庫中的型別來處理io。這些型別支援從裝置讀取資料、向裝置寫入資料的io操作,裝置可以是檔案、控制台視窗等。還有一些型別允許記憶體io,即,從string讀取資料,向string寫入資料。
c++/c++11中標頭檔案定義了標準輸入/輸出流物件。包含了也自動包含了、、、和。
標頭檔案中的物件包括:
(1)、narrow characters(char)即窄字元:cin(standard input stream (object))、cout(standard output stream (object))、cerr(standard output stream for errors (object))、clog(standard output stream for logging (object));
(2)、wide characters(wchar_t)即寬字元:wcin(standard input stream (wide) (object))、wcout(standard output stream (wide) (object))、wcerr(standard output stream for errors (wide) (object))、wclog(standard output stream for logging (wide) (object))。
io庫:
(1)、istream(輸入流)型別,提供輸入操作;
(2)、ostream(輸出流)型別,提供輸出操作;
(3)、cin,乙個istream物件,標準輸入流,用來從標準輸入讀取資料;
(4)、cout,乙個ostream物件,標準輸出流,從標準輸出寫入資料,輸出可以重定向( 「>」 或「1>」)到乙個指定檔案中;用於將資料寫入標準輸出,通常用於程式的正常輸出內容。
(5)、cerr,乙個ostream物件,標準錯誤流,通常用於輸出程式錯誤資訊或與其它不屬於正常邏輯的輸出內容,寫入到標準錯誤,預設情況下,寫到cerr的資料是不緩衝的;錯誤資訊可以直接傳送到顯示器,而無需等到緩衝區或者新的換行符時,才被顯示;可以通過」 2> 」方式重定向輸出到指定檔案中;cerr通常用於輸出錯誤資訊或其它不屬於程式正常邏輯的輸出內容。
(6)、clog:乙個ostream物件,標準錯誤流,關聯到標準錯誤;與cerr區別:cerr和clog都是標準錯誤流,區別在於cerr不經過緩衝區,直接向顯示器輸出資訊,而clog中的資訊缺省會存放在緩衝區,緩衝區滿或者遇到endl時才輸出;預設情況下,寫到clog的資料是被緩衝的。clog通常用於報告程式的執行資訊,存入乙個日誌檔案中。
(7)、>>運算子,用來從乙個istream物件讀取輸入資料;
(8)、《運算子,用來向乙個ostream物件寫入輸出資料;
(9)、getline函式,從乙個給定的istream讀取一行資料,存入乙個給定的string物件中。
io庫型別和標頭檔案:iostream定義了用於讀寫流的基本型別,fstream定義了讀寫命名檔案的型別,sstream定義了讀寫記憶體string物件的型別,如下圖:
為了支援使用寬字元的語言,標準庫定義了一組型別和物件來操縱wchar_t型別的資料。寬字元版本的型別和函式的名字以乙個w開始。例如,wcin、wcout和wcerr是分別對應cin、cout和cerr的寬字元版物件。寬字元版本的型別和物件與其對應的普通char版本的型別定義在同乙個標頭檔案中。
測試**如下:
#include "iostream.hpp"
#include // reference:
int test_iostream_cout()
int test_iostream_cin()
int test_iostream_clog()
int test_iostream_cerr()
// reference:
static void testwide()
int test_iostream_w()
github: 標頭檔案iostream和iostream h的區別
在程式設計中遇到了個小問題。當頭檔案是 include 時,提示編譯錯誤。嘗試把 h 去掉,編譯正確。不禁要問,它們到底有什麼區別呢?上網查了查,得到以下結論 iostream.h為非法的輸入輸出流,h的標頭檔案是c語言格式的,由於當時還沒有命名空間這個說法,所以也就不存在std這個命名空間標示符。...
C 中標頭檔案的問題
在編c 時遇到的問題,庫函式strlen,strcmp的標頭檔案問題 include include include using namespace std 兩個都能正確編譯執行,string也是存在的,都是共存的 今天用到randomize 發現沒有了,查了一下,原來randomize 和rand...
C中標頭檔案的使用
最近在寫作業系統的時候,學習了作者的c 中標頭檔案的布置風格,記錄於此。可以有乙個檔案專門存放全域性變數 也有可能是一類檔案 然後對全域性變數的標頭檔案宣告,使用extern關鍵字。普通c檔案對應的標頭檔案.h中,主要存放結構體和巨集。能定義成巨集的盡量到相應的標頭檔案中定義成巨集,這有利於 的可讀...