C++ 输入输出流 文本文件 二进制文件读写
文本文件/ASCII文件(能直接显示内容,费存储空间):文件中每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件或称字符文件。
二进制文件(不能显示内容,节省存储空间) :将内存中的数据存储形式不加转换的传送到磁盘文件,内存数据的映像文件,因为文件中的信息不是字符数据,而是字节中的二进制形式信息。
两者操作都需要先打开文件,用完关闭文件。在打开时用ios::binary指定为以二进制形式传送和存储。
二进制文件除了可以作为输入文件或者输出文件外,还可以既能输入又能输出的文件,这是和ASCII文件不同的地方、
简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码。
从上面可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8)。而二进制文件可看成是变长编码的,因为是值编码嘛,多少个比特代表一个值,完全由你决定。大家可能对BMP文件比较熟悉,就拿它举例子吧,其头部是较为固定长度的文件头信息,前2字节用来记录文件为BMP格式,接下来的8个字节用来记录文件长度,再接下来的4字节用来记录bmp文件头的长度,bmp就是一个自定义的二进制文件,只是格式固定了。一般自己定义的二进制文件需要按自定义格式来识别内容。
二.iostream类:C++用于输入输出的类库。
在C++中,输入输出流被定义为类,C++的I/O库中的类称为流类,用流类定义的对象称为流对象。
流中的内容可以是ASCII字符,二进制形式的数据,图形图像,数字音频视频或其他形式的信息。
I/O类库中常用流类
类名 作用 在哪个头文件中声明
ios 抽象基类 iostream
istream 通用输入流和其他输入流的基类 iostream
ostream 通用输出流和其他输出流的基类 iostream
iostrean 通用输入输出流和人其他输入输出流的基类 iostream
ifstream 输入文件流类 fstream
ofstream 输出文件流类 fstream
fstream 输入输出文件流类 fstream
istrstream 输入字符串流类 strstream
......................................
2 有关头文件
iostream 包含对输入输出流进行操作所需的基本信息
fstream 用于用户管理的文件的i/o操作
strstream 用于字符串流的i/o
stdiostream 用于混合使用C和C++的I/O机制时,例如想将C程序转变为C++程序
iomanip 在使用格式化I/O时应包含此头文件
iostream头文件中定义的类有ios,istream,ostream,iostream等
iostream 包含了对输入输出的进行的基本操作所需信息,因此大多数C++程序都包括iostream
iostream 中还定义了4中流对象 cin(键盘),cout(屏幕),cerr(屏幕),clog(屏幕) 定义形式:ostream cout(stdout)
3 iostream头文件中重载运算符
在istream 和ostream类中分别对>>和<<进行了重载,以便于能用它输入输出各种标准数据类型的数据:
ostream operator <<(int); //用于向输出流插入一个int数据
ostream operator <<(flaot); //用于向输出流插入一个float数据
ostream operator <<(char); //用于向输出流插入一个char数据
ostream operator <<(char *); //用于向输出流插入一个字符串数据
注意 自定义类型重载>> <<,在类内声明为友元函数重载。
4 cout.put('a');流成员函数put输出字符
5 cin是iostream类的对象,它从标准输入设备(键盘)获取数据,程序中的变量通过流提取符>>从流中提取数据。流提取符>>从流中提取数据时通常跳过输入流中的空格 tab键 换行符等空白字符。注意:只有在输入完数据再按回车键后,改行数据才被送入键盘缓冲区,形成输入流,提取运算法>>才能从中提取数据。
ch=cin.get();读入一个字符
cin.get(ch);
cin.get(字符指针/数组,字符个数n,终止字符)
cin.getline(字符指针/数组,字符个数n,终止字符) 两个区别:cin.get函数从输入流读字符时,遇到终止字符时停止读取,指针不向后移动,仍然停在终止符之前的位置,在下一次读取时从终止符开始。后者会跳过终止符。
前者得借助ignore函数跳过终止符,
6 cin.eof(),cin.peek(),cin.outback(),cin,ignore(n,终止字符)
7.
C++ 输入输出流 文本文件 二进制文件读写相关推荐
- Java之输入输出流(文件的读写)
Java之输入输出流(文件的读写) 首先,在编程的世界,流明显显得很重要.C++的输入输出流,Java的输入输出流等等. 首先我们得学会如何使用Java的输入输出流.首先,它们被封装在Java的一个叫 ...
- java文件流写入文件_JAVA 输入输出流 本地文件读写
今天学了一下Java的文件的读写. 流名为什么名字都这么长???? 这让我咋么记? 今天我想实现的功能是基本的文件操作,从输入in文件里读取数据,然后程序处理之后输出到out输出文件中,以助于ACM中 ...
- Java常用工具类之异常、包装类、字符串处理类、集合框架实现类、输入输出流、多线程
集合.多线程和I/O流等 介绍6种常用工具类: 1.如何应用异常处理程序中的问题?2.如何通过包装器类实现基本数据类型的对象化处理?3.字符串处理类String.StringBuilder是如何进行字 ...
- java写入dat文件_dat格式用什么播放器 如何在JAVA中进行文件的读写 I/O 输入输出流...
3.RandomAccessFile的使用 4.I/O 输入输出流 1.创建File对象:File file=new File(String path);注意:File.seperater();获取系 ...
- java 字符流read函数,JAVA中文件的读写 I/O 输入输出流
主要内容 1.编码问题 2.File类的使用 3.RandomAccessFile的使用 4.I/O 输入输出流 编码问题: 1 importjava.io.UnsupportedEncodingEx ...
- java 对象读写_java 对象输入输出流读写文件的操作实例
java 对象输入输出流读写文件的操作实例 java 支持对对象的读写操作,所操作的对象必须实现Serializable接口. 实例代码: package vo; import java.io.Ser ...
- C++文本文件操作和二进制文件读写
文本文件操作: 代码如下: #include <iostream> #include <fstream> using namespace std;void test01() { ...
- 利用输入输出流及文件类编写一个程序,可以实现在屏幕显示文本文件的功能,类似DOS命令中的type命令
利用输入输出流及文件类编写一个程序,可以实现在屏幕显示文本文件的功能,类似DOS命令中的type命令 package p1;import java.io.BufferedReader; import ...
- java实验七输入输出流_实验六_Java的输入输出流
JAVA的输入输出流 实验六 Java的输入输出流 实验目的 1. 理解I/O流的概念,掌握其分类 2. 掌握文本文件读写.二进制文件读写 实验环境 JDK1.4以上版本, Eclipse集成开发环境 ...
最新文章
- 2018年全国多校算法寒假训练营练习比赛(第五场)题解
- C#正则表达式引发的CPU跑高问题以及解决方法
- php把表情去掉,php如何去除表情
- WebX.0:Web1.0
- 如何汉化美化Citrix的WEB界面
- Boost.MultiIndex 使用 Boost.Interprocess 分配器的示例
- 深度学习论文翻译--Deep Residual Learning for Image Recognition
- 熟知的CRM有哪些功能特点?
- 权值线段树小结(hdu多校,普通平衡树,郁闷的出纳员)
- P4173-残缺的字符串【FFT】
- 软件测试用例项目写作,通用测试用例写作方法
- 数字图像处理的起源与应用
- JS前端生成二维码的几种方式
- 制定可用性测试计划(1)
- veil-Evasion免杀使用
- 佳博80250打印机怎么看打印机IP
- CUDA编程——GPU架构,由sp,sm,thread,block,grid,warp说起
- Mac M1芯片同态加密库的安装(TFHE问题)
- OpenCV + CPP 系列(卅三)图像特征提取(Harris角点检测、Shi-Tomasi角点检测、自定义角点检测)
- 实战电商后端系统(三)—— 以vue-element-admin为基础的前端项目对接后端接口
热门文章
- 先本地仓库中国添加jar包
- pycharm与python环境配置
- 【BZOJ3555】[Ctsc2014]企鹅QQ hash
- Working with multiple environments
- CF#190DIV.1
- 羊皮卷的故事-第二章
- VML编程之------VML语言入门《VML极道教程》原著:沐缘华
- java tabpanel_java cs tab点击切换标签的实现 panel
- mybatis mapper配置 bigint_SpringBoot基础架构1(SpringBoot、MyBatis-Plus与Thymeleaf)
- python解析xml文件选用模块_python-minidom模块【解析xml】