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 解决方案,其中就包含
232 0
|
缓存 移动开发 编译器
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有缓冲错误流
345 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;
2126 0
|
9月前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
5月前
|
人工智能 机器人 编译器
c++模板初阶----函数模板与类模板
class 类模板名private://类内成员声明class Apublic:A(T val):a(val){}private:T a;return 0;运行结果:注意:类模板中的成员函数若是放在类外定义时,需要加模板参数列表。return 0;
156 0
|
5月前
|
存储 编译器 程序员
c++的类(附含explicit关键字,友元,内部类)
本文介绍了C++中类的核心概念与用法,涵盖封装、继承、多态三大特性。重点讲解了类的定义(`class`与`struct`)、访问限定符(`private`、`public`、`protected`)、类的作用域及成员函数的声明与定义分离。同时深入探讨了类的大小计算、`this`指针、默认成员函数(构造函数、析构函数、拷贝构造、赋值重载)以及运算符重载等内容。 文章还详细分析了`explicit`关键字的作用、静态成员(变量与函数)、友元(友元函数与友元类)的概念及其使用场景,并简要介绍了内部类的特性。
237 0
|
7月前
|
编译器 C++ 容器
【c++11】c++11新特性(上)(列表初始化、右值引用和移动语义、类的新默认成员函数、lambda表达式)
C++11为C++带来了革命性变化,引入了列表初始化、右值引用、移动语义、类的新默认成员函数和lambda表达式等特性。列表初始化统一了对象初始化方式,initializer_list简化了容器多元素初始化;右值引用和移动语义优化了资源管理,减少拷贝开销;类新增移动构造和移动赋值函数提升性能;lambda表达式提供匿名函数对象,增强代码简洁性和灵活性。这些特性共同推动了现代C++编程的发展,提升了开发效率与程序性能。
281 12
|
8月前
|
设计模式 安全 C++
【C++进阶】特殊类设计 && 单例模式
通过对特殊类设计和单例模式的深入探讨,我们可以更好地设计和实现复杂的C++程序。特殊类设计提高了代码的安全性和可维护性,而单例模式则确保类的唯一实例性和全局访问性。理解并掌握这些高级设计技巧,对于提升C++编程水平至关重要。
170 16

热门文章

最新文章