请输入您要查询的百科知识:

 

词条 iostream.h
释义

iostream的含义

iostream.h是input output stream的简写,意思为标准的输入输出流头文件。它包含:

(1)cin>>"要输入的内容"

(2)cout<<"要输出的内容"

这两个输入输出的方法需要#include<iostream.h>来声明头文件。

组成

基本类模板

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的比较

区别

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++头文件,对应的是新的strng类;<cstring>是对应旧的C头文件的std版本。而<iostream.h>和<iostream>的关系,类似于<string.h>和<cstring>的关系,实现的功能是相同的,主要是是否使用命名空间std的区别。

使用建议

如果你的编译器同时支持<iostream>和<iostream.h>,那使用#include<iostream>,得到的是置于命名空间std下的iostream库的元素;如果使用 #include<iostream.h>,得到的是置于全局空间的同样的元素。在全局空间获取元素会导致名字冲突,而设计名字空间的初衷正是用来避免这种名字冲突的发生。还有,打字时<iostream>比<iostream.h>少两个字,所以通常来说,建议使用<iostream>。

vc中iostream.h的内容

/***

*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_VER

class _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 */

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/12/23 15:17:11