C 中標頭檔案iostream介紹

2021-07-29 00:17:43 字數 2158 閱讀 7932

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中,主要存放結構體和巨集。能定義成巨集的盡量到相應的標頭檔案中定義成巨集,這有利於 的可讀...