首頁  >  文章  >  後端開發  >  iostream頭檔的作用是什麼

iostream頭檔的作用是什麼

青灯夜游
青灯夜游原創
2021-03-25 15:45:4926887瀏覽

iostream頭檔包含了操作輸入輸出流的方法,例如讀取一個文件,以流的方式讀取;其作用是:讓初學者有一個方便的命令列輸入輸出試驗環境。 iostream的設計初衷是提供一個可擴展的型別安全的IO機制。

iostream頭檔的作用是什麼

本教學操作環境:windows7系統、C 17版本、Dell G3電腦。

C 語言不直接處理輸入輸出,而是透過一簇定義在標準庫中的型別來處理IO。這些類型支援從設備讀取資料、寫入資料到設備的IO操作,設備可以是檔案、控制台視窗等。還有一些類型允許記憶體IO,即,從string讀取數據,向string寫入資料。

C /C 11中頭檔317e6b6395ab75e70e7f0880af8f6835定義了標準輸入/輸出流物件。包含了317e6b6395ab75e70e7f0880af8f6835也自動包含了68f3de17607fa85b1eb628686f64a195、acccb54a389e0baa0241b2d4d6abf2d2、b2183bd60bc8132bf9e2d0a9243f6275、ad3e299ade7c783006cf69c7370756a8和c247aadae35403e5c039ed18c7357087。

頭檔317e6b6395ab75e70e7f0880af8f6835中的物件包括:

(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 for (object))。

__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 istream cin, *_Ptr_cin;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 ostream cout, *_Ptr_cout;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 ostream cerr, *_Ptr_cerr;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 ostream clog, *_Ptr_clog;

__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 wistream wcin, *_Ptr_wcin;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 wostream wcout, *_Ptr_wcout;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 wostream wcerr, *_Ptr_wcerr;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 wostream wclog, *_Ptr_wclog;

C IO heads, templates and class ( https://www.ntu.edu.sg/home/ehchua/programming/cpp/cp10_IO.html ):

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 <iostream>

// reference: http://www.tutorialspoint.com/cplusplus/cpp_basic_input_output.htm
int test_iostream_cout()
{
	char str[] = "Hello C++";
	std::cout << "Value of str is : " << str << std::endl;

	return 0;
}

int test_iostream_cin()
{
	char name[50];

	std::cout << "Please enter your name: ";
	std::cin >> name;
	std::cout << "Your name is: " << name << std::endl;

	return 0;
}

int test_iostream_clog()
{
	char str[] = "Unable to read....";
	std::clog << "Error message : " << str << std::endl;

	return 0;
}

int test_iostream_cerr()
{
	char str[] = "Unable to read....";
	std::cerr << "Error message : " << str << std::endl;

	return 0;
}

// reference: https://msdn.microsoft.com/en-us/library/6xwbdak2(v=vs.80).aspx
static void TestWide()
{
	int i = 0;
	std::wcout << L"Enter a number: ";
	std::wcin >> i;
	std::wcerr << L"test for wcerr" << std::endl;
	std::wclog << L"test for wclog" << std::endl;
}

int test_iostream_w()
{
	int i = 0;
	std::cout << "Enter a number: ";
	std::cin >> i;
	std::cerr << "test for cerr" << std::endl;
	std::clog << "test for clog" << std::endl;

	TestWide();

	return 0;
}

相關推薦:C 影片教學

以上是iostream頭檔的作用是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn