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++ 输入输出流 文本文件 二进制文件读写的更多相关文章
- 【转】iphone 输入/输出流异步读写数据
原文:iphone 输入/输出流异步读写数据 分类: iphone2012-05-30 14:50 2484人阅读 评论(1) 收藏 举报 iphoneattributesinterfacepaths ...
- C++入门到理解之文件操作(文本文件的读写+二进制文件的读写)
原文地址http://www.javayihao.top/detail/168 一:概述 1.程序在运行中产生的数据都是临时数据,程序一旦运行结束会被释放,可以通过文件相关的操作将数据持久保存. 2. ...
- JAVA核心技术I---JAVA基础知识(二进制文件读写和zip文件读写)
一:二进制文件读写 (一)写文件 –先创建文件,写入数据,关闭文件 –FileOutputStream, BufferedOutputStream,DataOutputStream –DataOutp ...
- Java高级特性 第4节 输入输出流
一.使用I/O操作文件 关键步骤: 使用File类操作文件或目录属性 使用FileInputStream类读文本文件 使用FileOutputStram类写文本文件 使用BufferedReader类 ...
- c++语言的输入输出流库
1.c++语言标准输入输出流 <1>控制符的用法 #include <iostream> #include <iomanip> using namespace st ...
- Java IO学习--输入输出流
一.Java IO的定义 I/O:输入输出系统,由输入输出控制系统和外围设备两部分组成. Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输 ...
- C++ STL——输入输出流
[TOC] 注:原创不易,转载请务必注明原作者和出处,感谢支持! 注:内容来自某培训课程,不一定完全正确! 一 缓冲区 (1)标准输入:从键盘输入数据到程序(input) (2)标准输出:程序数据输出 ...
- java 3 接口与多态&输入输出流
接口 中的所有方法都是方法 抽象 使用接口实现多继承 类型的装换 数据成员就变成了static 和 final food 和 snow 都是可以吃的 可以同时实现多个接口 接口与接口之间也可以有继承关 ...
- java输入/输出流的基本知识
通过流可以读写文件,流是一组有序列的数据序列,以先进先出方式发送信息的通道. 输入/输出流抽象类有两种:InputStream/OutputStream字节输入流和Reader/Writer字符输入流 ...
随机推荐
- Some Java exceptions, messages and errors.
http://www.antapex.org/messages_java.txt http://www.jvmmonitor.org/index.html
- CentOS7 防火墙配置(关闭)
CentOS7 的防火墙配置跟曾经版本号有非常大差别,经过大量尝试,最终找到解决这个问题的关键 CentOS7这个版本号的防火墙默认使用的是firewall.与之前的版本号使用iptables不一样. ...
- js(数组篇02)
原文:http://www.cnblogs.com/zaking/p/8686676.html 上一篇文章简单的介绍了一下js的类型,以及数组的增删方法.这一篇文章,我们一起来看看数组还有哪些用法,以 ...
- VC++ 内存泄露与检测的一种方法
本文介绍,当VC++或者MFC程序,出现内存泄露时,如何快速定位的方法,这种方法有一定的局限性,在注意事项中会给出的. MFC程序 当MFC程序出现内存泄露时,退出程序时的VS调试输出 ...
- php把数组、字符串 生成文件
生成的代码 data/ss.php <?php return array ( ', ', ); php代码 $str = "<?php\nreturn \n"; $my ...
- phpcms v9 添加内容出现500错误
今天开发好一个网站,上传网站后,不知道安装的时候要求fsockopen()函数打开,我直接跳过安装完成的,所以搞得后面出错了,我一直以为这个问题,今天花了一天的时间找资料,测试,终于知道什么原因了,其 ...
- jsavascript 面向对象的下拉菜单
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- mysql中json_extract函数的使用?作用是什么?
需求描述: 今天看mysql中的json数据类型,涉及到一些使用,使用到了函数json_extract来 获取json字段中某个key的值,在此记录下. 操作过程: 1.查看包含json字段的表信息 ...
- c++运算符重载---20
原创博文,转载请标明出处--周学伟 http://www.cnblogs.com/zxouxuewei/ c++的一大特性就是重载(overload),通过重载可以把功能相似的几个函数合为一个,使得程 ...
- 如何用一个for循环打印出一个二维数组
思路分析: 二维数组在内存中默认是按照行存储的,比如一个二维数组{{1,2,3,},{4,5,6}},它在内存中存储的顺序就是1.2.3.4.5.6,也就是说,对于这6个数组元素,按照从0到5给它们编 ...