fbpx
维基百科

iostream

iostreamC++中用于数据的流式输入与输出头文件,屬於C++标准程式库的一部分。[1][2]

iostream 为 Input/Output Stream 的缩写,即是輸入/輸出流。「流」是一連串從I/O設備讀寫的字符[3]

概述 编辑

流输入输出库中的大部分类都是模板类,可以适用于不同的字符类型或操作函数(如字符比较)。常用的一些字符类型的流输入输出已经用typedef定义了相应的模板特化实例。

例如,basic_fstream<CharT,Traits>是文件流输入输出的实现的模板类。它的一个特化实例:fstreambasic_fstream<char,char_traits<char>>的类型别名,换句话说,这是basic_fstream的字符类型为char使用默认字符操作集的特化实例。

流输入输出库中的类可分为两类。一是定义了界面的抽象,适用于任何流类型,无论是文件流、内存缓存区流或者网络socket流。二是对具体数据源与数据汇(sink)的流的实现。C++标准库仅实现了文件流与内存缓冲区流。

流输入输出库中的类依据是否实现底层或高层操作可分为两类。实现了底层操作的类称作流缓冲区(stream buffer),处理没有任何格式化功能的字符。这些类极少被编程者直接使用。实现高层操作的类称作流,并提供了不同的格式化能力,是构建于流缓冲区之上的。

下表列出了流输入输出库的所有类的分类:

Class 解释 Typedefs
Stream buffers (底层功能)
basic_streambuf 提供了底层的输入输出界面,被具体的数据源与汇实现。罕用
  • streambuf - 字符类型char
  • wstreambuf - 字符类型wchar_t
basic_filebuf 提供了文件流的底层的输入输出界面,被具体的数据源与汇实现。罕用
  • filebuf - 字符类型 char
  • wfilebuf -字符类型 wchar_t
basic_stringbuf 提供了字符文件流的底层的输入输出界面,被具体的数据源与汇实现。罕用
  • stringbuf - 字符类型char
  • wstringbuf - 字符类型wchar_t
Support classes
ios_base 管理格式化信息与异常状态 不適用
basic_ios 管理流缓冲区
  • ios - 字符类型char
  • wios - 字符类型wchar_t
Input streams buffers (高层功能)
basic_istream 包装一个抽象流缓冲区并提供高层输入界面,如格式化能力
  • istream - 字符类型 char
  • wistream - 字符类型wchar_t
basic_ifstream 包装一个文件流缓冲区并提供高层输入界面,如打开关闭流
  • ifstream - 字符类型char
  • wifstream - 字符类型wchar_t
basic_istringstream 包装一个字符串流缓冲区并提供高层输入界面,如访问基础字符串
  • istringstream - 字符类型char
  • wistringstream - 字符类型wchar_t
Output streams buffers (高层功能)
basic_ostream 包装一个抽象流缓冲区并提供高层输出界面,如格式化能力
  • ostream - 字符类型char
  • wostream - 字符类型wchar_t
basic_ofstream 包装一个文件流缓冲区并提供高层输出界面,如打开关闭流
  • ofstream - 字符类型char
  • wofstream - 字符类型wchar_t
basic_ostringstream 包装一个字符串流缓冲区并提供高层输出界面,如访问基础字符串
  • ostringstream - 字符类型char
  • wostringstream - 字符类型wchar_t
Input/output streams buffers (高层功能)
basic_iostream 包装一个抽象流缓冲区并提供高层输入输出界面,如格式化能力
  • iostream - 字符类型char
  • wiostream - 字符类型wchar_t
basic_fstream 包装一个文件流输入输出缓冲区,并提供高层输入输出界面,如打开关闭文件
  • fstream - 字符类型char
  • wfstream - 字符类型wchar_t
basic_stringstream 包装一个字符串流输入输出缓冲区,并提供高层输入输出界面,如访问基础字符串
  • stringstream - 字符类型char
  • wstringstream - 字符类型wchar_t

头文件 编辑

  • <ios>包含着ios_basebasic_ios的类的定义,负责信息格式化与关联的流缓冲区。
  • <istream>包含了basic_istream类模板定义,实现了格式化输入
  • <ostream>包含了basic_ostream类模板定义,实现了格式化输出
  • <iostream>包含了basic_iostream类模板定义,实现格式化输入输出
  • <fstream>包含了basic_ifstream, basic_ofstreambasic_fstream类模板定义,实现格式化文件流的格式化输入、输出
  • <sstream>包含了basic_istringstream, basic_ostringstreambasic_stringstream 类模板定义,实现格式化字符串流的输入输出
  • <iomanip>包含了格式化manipulator
  • <iosfwd>包含了所有的流输入输出库的前向声明(forward declaration)

支持类 编辑

ios_basebasic_ios是两个类处理底层比特流。ios_base存储格式化信息与流的状态。basic_ios管理关联的流缓冲区。basic_ios通常以特化实例ioswios出现。basic_iosios_base很少被程序员直接使用。通常,它们的功能通过其它派生的类,如iostream[4][5]

Typedefs 编辑

名字 描述
ios basic_ioschar类型特化
wios basic_ioswchar_t类型特化
streamoff 支持内部操作
streampos 保存缓冲器指针或文件指针的当前位置
wstreampos 保存宽字符版的缓冲器指针或文件指针的当前位置
streamsize 流的尺寸

格式化操纵符(manipulator) 编辑

名字 描述
boolalpha / noboolalpha 指示流中的bool类型变量是否以truefalse,还是以01形式出现
skipws / noskipws 指示输入操作时空白符是否被跳过
showbase / noshowbase 指示数的基数记数标志是否显示
showpoint / noshowpoint 指示当浮点数小数部分为0时,是否显示小数部分
showpos / noshowpos 指示对于正数是否显示+符号
unitbuf / nounitbuf 指示输出是否被缓冲
uppercase / nouppercase 指示在16进制整数或浮点数输出时是否使用大写字符
left / right / internal 指出对齐方式
dec / oct/ hex 指示显示整数时的记数法
fixed / scientific/
hexfloat(C++11) /
defaultfloat(C++11)
指示浮点数显示时的记数法

输入/输出流 编辑

iostream头文件定义了输入输出流对象:cin, cout, cerr, clog分别为标准输入、输出、错误(无缓冲)、簿记(有缓冲)的流对象。都属于std 名字空间[6]

ostream对象 编辑

cout属于ostream类型,重载了左移位算符。cout左移位算符的运算结果为cout自身,这使得连续的左位移操作输出一串数据成为可能。cerrclog对象是ostream类型。

istream对象 编辑

cinistream类型,重载了右位移算符。

输入设备是按照行来把数据移入流输入缓冲区。也就是说,键盘输入数据时,只有按了换行键,这一行数据才进入缓冲区,可以读取。

表达式cin >> ival从标准输入读入一个值。有两种情况会使一个istream对象的bool转型为false:读到EOF(文件结束标志)或遇到一个无效的值(输入流进入fail状态)。可以用该istream对象的成员函数good()来测试,或者直接(bool)cin来测试。

istream对象的bool转型为false的情况下,此后的所有读入动作都是无操作(nop)。直到调用istream对象的成员函数clear()来清除该对象的内部状态。

缺省情况下,输入操作符丢弃空白符、空格符、制表符、换行符以及回车。如果希望读入上述字符,或读入原始的输入数据,一种方法是使用istream的get()成员函数来读取一个字符,另一种方法是使用istream的getline()成员函数来读取多个字符。istream的read(char* addr, streamsize size)函数从输入流中提取size个连续的字节,并将其放在地址从addr开始的内存中。istream成员函数gcount()返回由最后的get()、getline()、read()调用实际提取的字符数。

输入流有三个函数来测试流状态:即bad(), fail()和eof()。ignore()用来抛掉制定个数的缓冲区中的字节。

其它的istream成员函数:putback( char c ) 将字符放回iostream;unget()往回重置“下一个”istream项;peek()返回下一个字符或EOF,但不要提取出来 。

输出格式化 编辑

方法(函数) 编辑

width(int x) 下一个输出的最小字符数目
fill(char x) 填充字符
precision(int x) 设置浮点数的有效数字的位数

操纵符(manipulator) 编辑

操纵符(manipulator)是使用<<>>算子修改流的对象.

endl "end line": 流中插入换行符并刷新(flush)流的输出缓冲.
ends "end string": 向流中插入空字符(null character)并刷新(flush)流的输出缓冲.
flush 强迫流的输出缓冲写出到输出设备.
ws 导致输入流吃掉空白(whitespace)
showpoint 指示流要显示小数点与一些数字0

头文件中iomanip还定义了一些manipulators。

批评 编辑

某些环境下并不提供共享版本的C++库。导致程序要静态编译入C++标准库,使得程序的尺寸变大。[7]

示例 编辑

使用C++写成的 Hello World 程序如下所示:

#include <iostream> using namespace std; int main() {  cout << "Hello, world!" << endl;  return 0; } 

在这段代码中,文件 iostream 中声明了程序所要输入和输出操作的有关信息。

下述代码创建一个文件'file.txt'并写入文本'Hello World':

#include <fstream> int main() {  std::ofstream file;// can be merged to std::ofstream file("file.txt");  file.open("file.txt");  file << "Hello world!\n";  file.close();// is not necessary because the destructor closes the open file by default  return 0; } 

参考文献 编辑

  1. ^ ISO/IEC 14882:2003 Programming Languages — C++. [lib.string.streams]/1
  2. ^ Stanley B. Lippman, Josee Lajoie. C++ Primer. Massachusetts: Addison-Wesley. 1999 - third edition: 1109–1112. ISBN 0-201-82470-1. 
  3. ^ C++ Primer (5th Edition). : 5. ISBN 0-201-72148-1. 
  4. ^ Stanley B. Lippman, Josee Lajoie. C++ Primer. Massachusetts: Addison-Wesley. 1999 - third edition: 1112–1120. ISBN 0-201-82470-1. 
  5. ^ <ios> Visual Studio 2010. Microsoft MSDN: Visual Studio 2010. [28 September 2011]. (原始内容于2016-03-10). 
  6. ^ Holzner, Steven. C++ : Black Book. Scottsdale, Ariz.: Coriolis Group. 2001: 584. ISBN 1-57610-777-9. ...endl, which flushes the output buffer and sends a newline to the standard output stream. 
  7. ^ MinGW.org: Large executables. [22 April 2009]. (原始内容于2020-07-04). 

外部链接 编辑

  • C++ reference for input/output library (页面存档备份,存于互联网档案馆
  • Apache C++ Standard Library Iostreams (页面存档备份,存于互联网档案馆
  • Comprehensive tutorial on formatting output in C++. (页面存档备份,存于互联网档案馆
  • Apache C++ Standard Library Iostreams (页面存档备份,存于互联网档案馆

iostream, 是c, 中用于数据的流式输入与输出的头文件, 屬於c, 标准程式库的一部分, input, output, stream, 的缩写, 即是輸入, 輸出流, 是一連串從i, o設備讀寫的字符, 目录, 概述, 头文件, 支持类, typedefs, 格式化操纵符, manipulator, 输入, 输出流, ostream对象, istream对象, 输出格式化, 方法, 函数, 操纵符, manipulator, 批评, 示例, 参考文献, 外部链接概述, 编辑流输入输出库中的大部分类都是模板类. iostream是C 中用于数据的流式输入与输出的头文件 屬於C 标准程式库的一部分 1 2 iostream 为 Input Output Stream 的缩写 即是輸入 輸出流 流 是一連串從I O設備讀寫的字符 3 目录 1 概述 1 1 头文件 2 支持类 2 1 Typedefs 2 2 格式化操纵符 manipulator 3 输入 输出流 3 1 ostream对象 3 2 istream对象 4 输出格式化 4 1 方法 函数 4 2 操纵符 manipulator 5 批评 6 示例 7 参考文献 8 外部链接概述 编辑流输入输出库中的大部分类都是模板类 可以适用于不同的字符类型或操作函数 如字符比较 常用的一些字符类型的流输入输出已经用typedef定义了相应的模板特化实例 例如 basic fstream lt CharT Traits gt 是文件流输入输出的实现的模板类 它的一个特化实例 fstream是basic fstream lt char char traits lt char gt gt 的类型别名 换句话说 这是basic fstream的字符类型为char使用默认字符操作集的特化实例 流输入输出库中的类可分为两类 一是定义了界面的抽象 适用于任何流类型 无论是文件流 内存缓存区流或者网络socket流 二是对具体数据源与数据汇 sink 的流的实现 C 标准库仅实现了文件流与内存缓冲区流 流输入输出库中的类依据是否实现底层或高层操作可分为两类 实现了底层操作的类称作流缓冲区 stream buffer 处理没有任何格式化功能的字符 这些类极少被编程者直接使用 实现高层操作的类称作流 并提供了不同的格式化能力 是构建于流缓冲区之上的 下表列出了流输入输出库的所有类的分类 Class 解释 TypedefsStream buffers 底层功能 basic streambuf 提供了底层的输入输出界面 被具体的数据源与汇实现 罕用 streambuf 字符类型char wstreambuf 字符类型wchar tbasic filebuf 提供了文件流的底层的输入输出界面 被具体的数据源与汇实现 罕用 filebuf 字符类型 char wfilebuf 字符类型 wchar tbasic stringbuf 提供了字符文件流的底层的输入输出界面 被具体的数据源与汇实现 罕用 stringbuf 字符类型char wstringbuf 字符类型wchar tSupport classesios base 管理格式化信息与异常状态 不適用basic ios 管理流缓冲区 ios 字符类型char wios 字符类型wchar tInput streams buffers 高层功能 basic istream 包装一个抽象流缓冲区并提供高层输入界面 如格式化能力 istream 字符类型 char wistream 字符类型wchar tbasic ifstream 包装一个文件流缓冲区并提供高层输入界面 如打开关闭流 ifstream 字符类型char wifstream 字符类型wchar tbasic istringstream 包装一个字符串流缓冲区并提供高层输入界面 如访问基础字符串 istringstream 字符类型char wistringstream 字符类型wchar tOutput streams buffers 高层功能 basic ostream 包装一个抽象流缓冲区并提供高层输出界面 如格式化能力 ostream 字符类型char wostream 字符类型wchar tbasic ofstream 包装一个文件流缓冲区并提供高层输出界面 如打开关闭流 ofstream 字符类型char wofstream 字符类型wchar tbasic ostringstream 包装一个字符串流缓冲区并提供高层输出界面 如访问基础字符串 ostringstream 字符类型char wostringstream 字符类型wchar tInput output streams buffers 高层功能 basic iostream 包装一个抽象流缓冲区并提供高层输入输出界面 如格式化能力 iostream 字符类型char wiostream 字符类型wchar tbasic fstream 包装一个文件流输入输出缓冲区 并提供高层输入输出界面 如打开关闭文件 fstream 字符类型char wfstream 字符类型wchar tbasic stringstream 包装一个字符串流输入输出缓冲区 并提供高层输入输出界面 如访问基础字符串 stringstream 字符类型char wstringstream 字符类型wchar t头文件 编辑 lt ios gt 包含着ios base与basic ios的类的定义 负责信息格式化与关联的流缓冲区 lt istream gt 包含了basic istream类模板定义 实现了格式化输入 lt ostream gt 包含了basic ostream类模板定义 实现了格式化输出 lt iostream gt 包含了basic iostream类模板定义 实现格式化输入输出 lt fstream gt 包含了basic ifstream basic ofstream与basic fstream类模板定义 实现格式化文件流的格式化输入 输出 lt sstream gt 包含了basic istringstream basic ostringstream与basic stringstream 类模板定义 实现格式化字符串流的输入输出 lt iomanip gt 包含了格式化manipulator lt iosfwd gt 包含了所有的流输入输出库的前向声明 forward declaration 支持类 编辑ios base与basic ios是两个类处理底层比特流 ios base存储格式化信息与流的状态 basic ios管理关联的流缓冲区 basic ios通常以特化实例ios与wios出现 basic ios与ios base很少被程序员直接使用 通常 它们的功能通过其它派生的类 如iostream 4 5 Typedefs 编辑 名字 描述ios basic ios的char类型特化wios basic ios的wchar t类型特化streamoff 支持内部操作streampos 保存缓冲器指针或文件指针的当前位置wstreampos 保存宽字符版的缓冲器指针或文件指针的当前位置streamsize 流的尺寸格式化操纵符 manipulator 编辑 名字 描述boolalpha noboolalpha 指示流中的bool类型变量是否以true或false 还是以0或1形式出现skipws noskipws 指示输入操作时空白符是否被跳过showbase noshowbase 指示数的基数记数标志是否显示showpoint noshowpoint 指示当浮点数小数部分为0时 是否显示小数部分showpos noshowpos 指示对于正数是否显示 符号unitbuf nounitbuf 指示输出是否被缓冲uppercase nouppercase 指示在16进制整数或浮点数输出时是否使用大写字符left right internal 指出对齐方式dec oct hex 指示显示整数时的记数法fixed scientific hexfloat C 11 defaultfloat C 11 指示浮点数显示时的记数法输入 输出流 编辑iostream头文件定义了输入输出流对象 cin cout cerr clog分别为标准输入 输出 错误 无缓冲 簿记 有缓冲 的流对象 都属于std 名字空间 6 ostream对象 编辑 cout属于ostream类型 重载了左移位算符 cout左移位算符的运算结果为cout自身 这使得连续的左位移操作输出一串数据成为可能 cerr与clog对象是ostream类型 istream对象 编辑 cin是istream类型 重载了右位移算符 输入设备是按照行来把数据移入流输入缓冲区 也就是说 键盘输入数据时 只有按了换行键 这一行数据才进入缓冲区 可以读取 表达式cin gt gt ival从标准输入读入一个值 有两种情况会使一个istream对象的bool转型为false 读到EOF 文件结束标志 或遇到一个无效的值 输入流进入fail状态 可以用该istream对象的成员函数good 来测试 或者直接 bool cin来测试 istream对象的bool转型为false的情况下 此后的所有读入动作都是无操作 nop 直到调用istream对象的成员函数clear 来清除该对象的内部状态 缺省情况下 输入操作符丢弃空白符 空格符 制表符 换行符以及回车 如果希望读入上述字符 或读入原始的输入数据 一种方法是使用istream的get 成员函数来读取一个字符 另一种方法是使用istream的getline 成员函数来读取多个字符 istream的read char addr streamsize size 函数从输入流中提取size个连续的字节 并将其放在地址从addr开始的内存中 istream成员函数gcount 返回由最后的get getline read 调用实际提取的字符数 输入流有三个函数来测试流状态 即bad fail 和eof ignore 用来抛掉制定个数的缓冲区中的字节 其它的istream成员函数 putback char c 将字符放回iostream unget 往回重置 下一个 istream项 peek 返回下一个字符或EOF 但不要提取出来 输出格式化 编辑方法 函数 编辑 width int x 下一个输出的最小字符数目fill char x 填充字符precision int x 设置浮点数的有效数字的位数操纵符 manipulator 编辑 操纵符 manipulator 是使用 lt lt 或 gt gt 算子修改流的对象 endl end line 流中插入换行符并刷新 flush 流的输出缓冲 ends end string 向流中插入空字符 null character 并刷新 flush 流的输出缓冲 flush 强迫流的输出缓冲写出到输出设备 ws 导致输入流吃掉空白 whitespace showpoint 指示流要显示小数点与一些数字0头文件中iomanip还定义了一些manipulators 批评 编辑某些环境下并不提供共享版本的C 库 导致程序要静态编译入C 标准库 使得程序的尺寸变大 7 示例 编辑使用C 写成的 Hello World 程序如下所示 include lt iostream gt using namespace std int main cout lt lt Hello world lt lt endl return 0 在这段代码中 文件 iostream 中声明了程序所要输入和输出操作的有关信息 下述代码创建一个文件 file txt 并写入文本 Hello World include lt fstream gt int main std ofstream file can be merged to std ofstream file file txt file open file txt file lt lt Hello world n file close is not necessary because the destructor closes the open file by default return 0 参考文献 编辑 ISO IEC 14882 2003 Programming Languages C lib string streams 1 Stanley B Lippman Josee Lajoie C Primer Massachusetts Addison Wesley 1999 third edition 1109 1112 ISBN 0 201 82470 1 请检查 date 中的日期值 帮助 C Primer 5th Edition 5 ISBN 0 201 72148 1 Stanley B Lippman Josee Lajoie C Primer Massachusetts Addison Wesley 1999 third edition 1112 1120 ISBN 0 201 82470 1 请检查 date 中的日期值 帮助 lt ios gt Visual Studio 2010 Microsoft MSDN Visual Studio 2010 28 September 2011 原始内容存档于2016 03 10 Holzner Steven C Black Book Scottsdale Ariz Coriolis Group 2001 584 ISBN 1 57610 777 9 endl which flushes the output buffer and sends a newline to the standard output stream MinGW org Large executables 22 April 2009 原始内容存档于2020 07 04 外部链接 编辑C reference for input output library 页面存档备份 存于互联网档案馆 Apache C Standard Library Iostreams 页面存档备份 存于互联网档案馆 Comprehensive tutorial on formatting output in C 页面存档备份 存于互联网档案馆 Apache C Standard Library Iostreams 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title Iostream amp oldid 70539382, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。