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字符输入流 ...
随机推荐
- 【Hibernate步步为营】--最后的集合映射
上篇文章具体讨论了组合对象映射的原理.它事实上指的是怎样将对象模型中的组合关系映射到关系模型中,它是通过使用Hibernate提供的<component>标签来实现的,并须要在该标签中加入 ...
- js 创建多行字符串
function heredoc(fn) { ,-).join('\n') + '\n' } var tmpl = heredoc(function(){/* !!! 5 html include h ...
- C# IP地址与数字之间的互转
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Te ...
- 面试的角度诠释Java工程师(一)
前言: 我相信每一个程序员都是为了生活而努力着的.很多人因为兴趣,从此踏上了这条‘烧脑大行动’的金桥:也有很多人因为梦想和执着,奋不顾身融入这个职业:还有很多人因为被现实逼得太无奈,不得不为自己.为家 ...
- 设置更改root密码 连接mysql mysql常用命令
- Fedora26 tftp-server设置
安装tftp-server yum install -y tftp-server 启动软件 systemctl start tftp.socket systemctl enable tftp.soc ...
- Android检查设备是否可以访问互联网,判断Internet连接,测试网络请求,解析域名
安卓SDK提供了ConnectivityManager类,那么我们就可以轻松的获取设备的网络状态以及联网方式等信息. 但是要想知道安卓设备连接的网络能不能访问到Internet,就要费一番周折了. 本 ...
- 新浪股票接口AndroidSDK
昨天想到一个点子,需要访问股票行情.于是在网上搜了一下免费的股市行情的接口.发现新浪股票的数据接口比较稳定,于是就用它了. 网上对于新浪股票的数据接口介绍比较详细,并且实现也很简单,所以花了一下午就基 ...
- ios Develop mark
App Distribution Guidehttps://developer.apple.com/library/ios/documaentation/IDEs/Conceptual/AppDist ...
- 让Zend Studio联系关系CakePHP模板文件.ctp
让Zend Studio关联CakePHP模板文件.ctp Zend Studio是套强大的PHP编辑器,各种给力让PHP开发者爱不释手.对于CakePHP程序员来说,有件事情相当头疼,在初始安装好Z ...