iostream.h

iostream.h

標準的輸入輸出流頭檔案。用來聲明一些用來在標準輸入輸出設備上進行輸入輸出操作的對象。

基本介紹

  • 中文名:iostream.h
  • 外文名:iostream.h
  • 簡介:標準的輸入輸出流頭檔案
  • 全稱:input output stream
  • 組成:本類模板
含義,組成,基本類模板,類模板實例,標準對象,類型,操縱符,比較,區別,關係,使用建議,內容,

含義

iostream.h是input output stream的簡寫,意思為標準的輸入輸出流頭檔案。它包含:
(1)cin>>"要輸入的內容"
(2)cout<<"要輸出的內容"
這兩個輸入輸出的方法需要#include<iostream>頭檔案來聲明。

組成

基本類模板

iostream(.h)庫的基礎是類模板的層級結構。類模板以一種與類型無關的方式,提供了這個庫的大部分功能。
基本類模板是一個類模板的集合,其中每個類模板有兩個參數:字元類型(charT)參數決定處理的元素類型,而特性參數對每個特定的元素類型提供一些額外的特徵。
這個類層級結構中的類模板和它們的字元類型的實例相比,名字前面多了前綴basic_。例如,istream由之實例化而來的類模板名為basic_istream,fstream由之實例化而來的類模板名為basic_istream,等等。唯一的例外是ios_base,因為它本身就是類型無關的,所以它並不基於任何類模板,而是一個正規類。

類模板實例

iostream(.h)庫中集成了兩組標準的整個iostream類模板層級結構的實例:一組是面向單位元組的,處理char類型的元素;另一組是面向寬位元組的,處理wchar_t類型的元素。
面向單位元組(char型)的實例可能是iostream(.h)庫更為人所知的一部分。ios、istream和ofstream等類都是面向單位元組的。右圖是面向單位元組的所有類的名稱和關係。
面向單位元組的類的名稱和關係面向單位元組的類的名稱和關係
面向寬位元組(wchar_t型)的實例的命名規則與面向單位元組的實例相同,但所有類和對象名稱前有前綴w,例如wios、wistream和wofstream。

標準對象

作為iostream(.h)庫的一部分,頭檔案<iostream(.h)>聲明了一些用來在標準輸入輸出設備上進行輸入輸出操作的對象。
這些對象分為兩組:面向單位元組的,即常見的cin、cout、cerr和clog;其面向寬位元組的對應物,聲明為wcin、wcout、wcerr和wclog。

類型

iostream(.h)庫中的類很少對其成員的原型使用基本類型,而是通常使用根據其實例的特性定義的類型。對默認的char和wchar_t型的實例,類型streampos、streamoff和streamsize分別用以表示位置、偏移和大小。

操縱符

操縱符是用來與對流對象進行操作的插入(<<)和提取(>>)運算符一同使用的全局函式。它們通常變更流的屬性和格式設定。endl、hex和scientific是一些操縱符的例子。

比較

區別

iostream.h與iostream是不同的。
#include<iostream.h>是在舊的標準C++中使用。在新標準中,用#include<iostream>。iostream的意思是輸入輸出流。#include<iostream>是標準的C++頭檔案,任何符合標準的C++開發環境都有這個頭檔案。還要注意的是:在VC編程時要添加:
using namespace std;
其原因是:後綴為.h的頭檔案C++標準已經明確提出不支持了,早些的實現將標準庫功能定義在全局空間裡,聲明在帶.h後綴的頭檔案里,C++標準為了和C區別開,也為了正確使用命名空間,規定頭檔案不使用後綴.h。因此,當使用<iostream.h>時,相當於在C中調用庫函式,使用的是全局命名空間,也就是早期的C++實現;當使用<iostream>的時候,該頭檔案沒有定義全局命名空間,必須使用namespace std;這樣才能正確使用cout。

關係

<string.h>是舊的C頭檔案,對應的是基於char*的字元串處理函式;<string>是包裝了std的C++頭檔案,對應的是新的string類;<cstring>是對應舊的C頭檔案的std版本。而<iostream.h>和<iostream>的關係,類似於<string.h>和<cstring>的關係,實現的功能是相同的,主要是是否使用命名空間std的區別。

使用建議

如果你的編譯器同時支持<iostream>和<iostream.h>,那使用#include<iostream>,得到的是置於命名空間std下的iostream庫的元素;如果使用 #include<iostream.h>,得到的是置於全局空間的同樣的元素。在全局空間獲取元素會導致名字衝突,而設計名字空間的初衷正是用來避免這種名字衝突的發生。還有,打字時<iostream>比<iostream.h>少兩個字,所以通常來說,建議使用<iostream>。

內容

/****iostream.h - definitions/declarations for iostream classes** Copyright (c) 1990-1997, Microsoft Corporation. All rights reserved.**Purpose:* This file defines the classes, values, macros, and functions* used by the iostream classes.* [AT&T C++]** [Public]*****/#if _MSC_VER > 1000#pragma once#endif#ifdef __cplusplus#ifndef _INC_IOSTREAM#define _INC_IOSTREAM#if !defined(_WIN32) && !defined(_MAC)#error ERROR: Only Mac or Win32 targets supported!#endif#ifdef _MSC_VER// Currently, all MS C compilers for Win32 platforms default to 8 byte// alignment.#pragma pack(push,8)#include <useoldio.h>#endif // _MSC_VER/* Define _CRTIMP */#ifndef _CRTIMP#ifdef _DLL#define _CRTIMP __declspec(dllimport)#else /* ndef _DLL */#define _CRTIMP#endif /* _DLL */#endif /* _CRTIMP */typedef long streamoff, streampos;#include <ios.h> // Define ios.#include <streamb.h> // Define streambuf.#include <istream.h> // Define istream.#include <ostream.h> // Define ostream.#ifdef _MSC_VER// C4514: "unreferenced inline function has been removed"#pragma warning(disable:4514) // disable C4514 warning// #pragma warning(default:4514) // use this to reenable, if desired#endif // _MSC_VERclass _CRTIMP iostream : public istream, public ostream {public:iostream(streambuf*);virtual ~iostream();protected:iostream();iostream(const iostream&);inline iostream& operator=(streambuf*);inline iostream& operator=(iostream&);private:iostream(ios&);iostream(istream&);iostream(ostream&);};inline iostream& iostream::operator=(streambuf* _sb) { istream::operator=(_sb); ostream::operator=(_sb); return *this; }inline iostream& iostream::operator=(iostream& _strm) { return operator=(_strm.rdbuf()); }class _CRTIMP Iostream_init {public:Iostream_init();Iostream_init(ios &, int =0); // treat as private~Iostream_init();};// used internally// static Iostream_init __iostreaminit; // initializes cin/cout/cerr/clog#ifdef _MSC_VER// Restore previous packing#pragma pack(pop)#endif // _MSC_VER#endif // _INC_IOSTREAM#endif /* __cplusplus */
代碼

相關詞條

熱門詞條

聯絡我們