I/O流类库(一)
2016-01-04 16:19
113 查看
I/O
数据的输入输出(input/output简写为I/O)对标准输入设备和标准输出设备的输入输出简称为标准I/O
堆在外存磁盘上的文件的输入输出简称为文件I/O
对内存中指定的字符串存储空间的输入输出简称为串I/O
流
数据输入输出的过程,可以形象的看成流从流中获取数据的操作称为“提取”(输入)操作
向流中添加数据的操作称为“插入”(输出)操作
标准输入输出流
文件流
字符串流
流类库继承体系
流库具有两个平行的基类:streambuf和ios类,所有流类均以两者之一作为基类
streambuf类提供对缓冲区的低级操作:设置缓冲区、对缓冲区指针操作、向缓冲区存/取字符
ios_base、ios类记录流状态,支持对streambuf的缓冲区输入/输出的格式化或非格式化转换
streambuf:使用串保存字符序列。扩展streambuf在缓冲区提取和插入的管理
filebuf:使用文件保存字符串序列。包括打开文件、读/写、查找字符
四个输入输出对象
C++为用户进行标准I/O操作定义了四个类对象:cin、cout、cerr和clogcin为istream流类的对象,代表标准输入设备键盘,后三个为ostream流类的对象
cout代表标准输出设备显示器
cerr和clog含义相同,均代表错误信息输出设备显示器
ostream流的操作
operator<<可以连续输出,因为<<返回的还是cout
put()
输出单个字符
返回一个ostream对象的引用
cout.put('H').put('i')
write()
write(buf, len)
write()返回一个ostream对象的引用
cout.write(buf, len) //char buf[len]
istream流的操作
operator>>操作get()
- 读取单个字符
- 返回一个整数(输入字符的ASCall码值)
getline()
read()
peek()
putback()
get()
1. 读取单个字符 2. 返回一个整数(输入字符的ASCall码值)
get(cahr&)
1. 返回单个字符 2. 返回一个istream对象的引用
#include <iostream> using namespace std; int main(void) { char ch1, ch2; cin.get(ch1).get(ch2); cout << ch1 <<" "<<ch2<< endl; return 0; }
getline()
1. 读取一行(遇到回车键) 2. 返回istream对象的引用 3. getline()与>>的区别: char string1[256]; cin.getline(string1, 256); //get a whole line cin>>string1; //stop at the first blank space
#include <iostream> using namespace std; int main(void) { char buf[10] = { 0 }; cin.getline(buf, 9); cout << buf << endl; return 0; }
read()
1. read(buf, len) 2. 返回一个istream对象的引用 3. 对空白字符照读不误 4. 必须读满len个字符才停止
#include <iostream> using namespace std; int main(void) { char buf[10] = { 0 }; cin.read(buf, 5); cout << buf << endl; return 0; }
peek()
查看而不读取
putback()
将一个字符添加到流
#include <iostream> using namespace std; int main(void) { char c[10],c2,c3; c2 = cin.get(); c3 = cin.get(); cin.putback(c2); cin.getline(c, 9); cout << c << endl; return 0; }
相关文章推荐
- spring aop的三个关键概念
- iOS图片加载速度极限优化—FastImageCache解析
- 网页显示本地时间,不刷新网页代码
- 在centos6.7用yum安装redis
- iOS- Swift:指触即开,如何集成Touch ID指纹识别功能
- tornado 学习笔记16 HTTP1Connection
- 深入理解Java的接口和抽象类
- 第八篇 :微信公众平台开发实战Java版之如何网页授权获取用户基本信息
- 在WordPress中安装使用视频播放器插件Hana Flv Player
- jmeter入门系列文章一 HelloWorld
- Spring MVC - 基本知识 与 非注解/注解方式开发示例
- 第3课:Scala函数式编程彻底精通及spark源码阅读
- 控制精灵以相同的速度在不同设备上移动
- system("Pause")你会用吗
- cJSON代码阅读(8)——解析JSON对象
- 万年历程序--C++编写
- java中的动态代理----自己手动实现
- Java并发编程:线程池的使用
- [Android实例] 仿微信通讯录,A~Z拼音侧边检索
- 原生二维码的识别