C++输入和输出流1

简介: C++输入和输出流1

I/O流的概念和流类库的结构

                                                             站在程序的角度

程序的输入指的是从输入文件将数据送给程序,程序的输出指的是从程序将数据传送给输出文件。

C++输入输出包含以下三个方面的内容:

       对于系统指定的标准设备的输入和输出。即从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称标准I/O。[标准I/O只从键盘输入,输出到显示器]

       以外存磁盘文件为对象进行输入和输出,即从磁盘文件输入数据,数据输出到磁盘文件

以外存文件为对象的输入输出称为文件的输入输出,简称文件I/O.

       对内存中指定的空间进行输入和输出。通常指定一个字符数组作为存储空间(实际上可以利用该空间存储任何信息)。这种输入输出称为字符串输入输出,简称串I/O.

标准IO 从键盘输入,显示器屏幕输出
文件IO 从文件输入、输出
串IO 从内存输入、输出

C++的I/O对C的发展--类型安全和可扩展性

       在C语言中,用printf和scanf进行输入输出,往往不能保证所输入输出的数据是可靠的、安全的。在C++的输入输出中,编译系统对数据类型进行严格的检查,凡是类型不正确的数据都可能通过编译。因此C++的I/O操作是类型安全的。C++的I/O操作是可以扩展的,不仅可以用来输入输出标准类型的数据,也可以用于用户自定义的数据类型。(操作符重载 <<  >> 只能通过友元函数)

      C++通过I/O类库来实现丰富的I/O功能。这样使C++的输入输出明显地优于C语言中的printf和scanf,但是也为之付出了一些代价,C++的I/O系统变得比较复杂,要掌握的细节比较多。(相对来说,printf和scanf的读写速度比cin和cout更快)。

       C++编译系统提供了用于输入输出的iostream类库。iostream这个单词分为三部分:i-o-stream(输入-输出-流)。在iostream类库中包含许多用于输入输出的类。


I/O类库中常见的流类

类名 作用 在哪个头文件中声明
ios 抽象基础 iostream

istream

ostream

iostream

通用输入流和其他输入流的基类

通用输出流和其他输出流的基类

通用输入输出流和其他输入输出流的基类

iostream

iostream

iostream

ifstream

ofstream

fstream

输入文件流类

输出文件流类

输入输出文件流类

fstream

fstream

fstream

istrstream

ostrstream

strstream

输入字符串流类

输出字符串流类

输入输出字符串流类

strstream

strstream

strstream

       ios是抽象基类,由它派生出iostream类和ostream类,两个类名中第1个字母i和o分别代表输入(input)和输出(output)。istream类支持输入操作,ostream类支持输出操作,iostream类支持输入输出操作。iostream类是从istream类和ostream类通过多重继承而派生的类。

       C++对文件的输入输出需要用ifstream类和ofstream类,两个类名中第1个字母 i 和 o 分别代表输入输出。第2个字母f代表文件(file)。ifstream支持对文件的输入操作,ofstream支持对文件的输出操作。类ifstream继承了类istream,类ofsream继承了类ostream,类fstream继承了类iostream.


与iostream类库有关的头文件

       iostream类库中不同的类的声明被放在不同的头文件中,用户在自己的程序中用#include命令包含了有关的头文件就相当于在本程序中声明了所需要用到的类。可以换一种说法:头文件是程序与类库的接口  iostream类库的接口分别由不同的头文件来实现。常用的有:

      iostream    包含了对输入输出流进行操作所需的基本信息

      fstream      用于用户管理的文件的 I/O 操作

      strstream   用于字符串流I/O

      stdiostream 用于混合使用C和C++的I/O机制时

      iomainp     在使用格式化I/O时应包含此头文件


在iostream头文件中定义的流对象

       iostream头文件中定义的类:ios  istream  ostream iostream  istream_withassign ostream_withassign isstream_withassign等

       iostream头文件中定义的对象:

对象 含义 对应设备 对应的类 C语言中相应的标准文件
cin 标准输入流 键盘 istream_withassign stdin
cout 标准输出流 显示器 ostream_withassign stdout
cerr 标准错误流 显示器 ostream_withassign stderr
clog 标准错误流 显示器 ostream_withassign stderr

       在iostream头文件中定义以上4个流对象用以下形式(以cout为例:)

       ostream cout(stdout);        //带参的构造函数

       cout为ostream流类对象,把标准输出设备stdout作为参数,这样它就与标准输出设备(显示器)联系起来。


       在iostream头文件中重载运算符

       “<<”和“>>”本来在C++中是被定义为左移操作符和右移操作符的,由于在iostream头文件中对它们进行了重载,使它们能够作标准类型数据的输入和输出运算符。所以,在用它们的程序中必须使用#include包含到程序中。#include <iostream>

相关文章
|
C语言 C++ 开发者
C++输入流和输出流介绍
C++ 又可以称为“带类的 C”,即可以理解为 C++ 是 C 语言的基础上增加了面向对象(类和对象)。在此基础上,学过 C 语言的读者应该知道,它有一整套完成数据读写(I/O)的解决方案: 使用 scanf()、gets() 等函数从键盘读取数据,使用 printf()、puts() 等函数向屏幕上输出数据; 使用 fscanf()、fgets() 等函数读取文件中的数据,使用 fprintf()、fputs() 等函数向文件中写入数据。 要知道,C 语言的这套 I/O 解决方案也适用于 C++ 程序,但 C++ 并没有“偷懒”,它自己独立开发了一套全新的 I/O 解决方案,其中就包含
|
缓存 移动开发 编译器
C++STL开发温习与总结(六): 6.C++语言输入/输出流定义之输入/输出格式控制
C++STL开发温习与总结(六): 6.C++语言输入/输出流定义之输入/输出格式控制
C++STL开发温习与总结(六): 6.C++语言输入/输出流定义之输入/输出格式控制
|
存储 安全 C++
c++学习笔记之输入/输出流
1、wchar_t 区别于char,用于存储unicode字符。而char是单字节,只能存储ascii字符。 2、cin/cout/cerr/clog cerr无缓冲错误流 clog有缓冲错误流
246 0
|
数据安全/隐私保护 iOS开发 C++
【C/C++学院】0826-文件重定向/键盘输入流/屏幕输出流/字符串输入输出/文件读写简单操作/字符文件读写二进制与文本差别/get与getline挖掘数据/二进制与文本差别/随机位置/多线程初级
&lt;p&gt;&lt;/p&gt; &lt;h2&gt; &lt;span style=&quot;font-family:宋体; font-size:16pt&quot;&gt;文件重定向&lt;/span&gt;&lt;span style=&quot;font-family:宋体; font-size:16pt&quot;&gt;&lt;/span&gt; &lt;/h2&gt; &lt;img src=&quot;http://img.blog.csdn.net/20151103141629604&quot; alt=&quot;&quot;&gt;&lt;br&gt;
1995 0
|
5天前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
25 5
|
11天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
40 4
|
12天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
36 4
|
1月前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
27 4
|
1月前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
24 4