c++中IO输入输出流总结<一>
1 io类图关系

1.1 简化形式

1.1.2补充
iostream:
istream:从流中读取
ostream:写入到流
iosteram:读写流
fstream:
ifstream:从文件读
ofstream:写入文件
fstream:读写文件
2 流综述
2.1什么情况会导致刷缓冲
(1)程序正常结束,作为main函数结束的一部分将清空所有的缓冲区
(2)缓冲区满会刷缓冲
(3)endl flush刷缓冲
(4)在每次输出操作执行完后用unitbuf操作符设置流内部状态从而清空缓冲区
2.2 标准输出
输出流对象:cout,cerr,clog
2.2.1格式化输出iomanip
(1)相关控制符和功能如下图所示


(2)用格式控制符控制输出(记得包括头文件iomanip哦 下面也是)
int main()
{ int n = ;
cout << "设置进制:" << endl;
cout << "十进制" << n << endl;
cout << "十六进制" << hex << n << endl;
cout << "八进制" << oct << n << endl;
cout << "十进制" << dec << n << endl;
cin.get();
return ;
}
(3)设置域宽::::setw(n)n小于实际宽度按照实际宽度输出
int main()
{
int m = ;
cout << "设置域宽" << endl;
cout << setw() << m << endl;//
cout << setw() << m << endl;//
cout << setw() << m << endl;//
cin.get(); return ;
}
(4)设置填充字符setfil。。。。。需要和setw一起使用
int main6()
{
int x = ;
cout << "设置填充字符" << endl;
cout << setfill('*')<<setw()<<x<< endl;//*1234
cout << setw()<<x<< endl;// ******1234 cin.get();
return ;
}
(5)设置对齐方式setiosflags(ios::left/right)
int main7()
{
int y = ;
cout << "设置对齐方式" << endl;
cout << setfill(' ');
cout << setiosflags(ios::left) << setw() << y << endl;
cout << setiosflags(ios::right) << setw() << y << endl; cin.get();
return ; }
(6)显示小数点和正负数符号
int main8()
{
double d1 = / , d2 = 22.0 / ;
cout << "显示小数点尾和数符" << endl;
cout << d1 << endl;//2
//2.00000
cout << setiosflags(ios::showpoint) << d1 << endl;
//+3.14286强制显示符号
cout << setiosflags(ios::showpos) << d2 << endl;
//+3.14286
cout << d2 << endl;
cin.get();
return ; }
(7)设置进度
int main10()
{
double dd = 123.4567;
//1.2e+002
cout << setprecision() << dd << endl;
//
cout << setprecision() << dd << endl;
//123.5
cout << setprecision() << dd << endl;
//123.46这里会四舍五入
cout << setprecision() << dd << endl;
cin.get();
return ; }
3 标准输入cin
3.1 成员函数get
char get() 输入一个字符并返回(回车 tab等)
istream& get(char &)//实现链式编程
int main()
{
char ch;
while(cin.get(ch))
{
cout.put(ch);
}
return ;
}
istream& get(char*,int,char)//从输入流读取N-1字符,赋给字符数组
情况1:
int main()
{
char buf[]; cin.get(buf, , '/');
//cin.ignore(1);
cout << buf << endl;
cin.get(buf, , '/'); cout << buf << endl;
system("pause");
}

备注:这里没有ignore 按照字符/截断了
情况2:丢失了c
int main()
{
char buf[]; cin.get(buf, , '/');//输入i love china/ i love tianchao/
cin.ignore(,'c');
cout << buf << endl;
cin.get(buf, , '/'); cout << buf << endl;
system("pause");
}

情况三:退回到c
int main()
{
char buf[]; cin.get(buf, , '/');
cin.ignore(,'c');//忽略到c字符位置 保存后面的值
cin.putback('c');
cout << buf << endl;
cin.get(buf, , '/'); cout << buf << endl;
system("pause");
}

peek
int main()
{
char buf[]; cin.get(buf, , '/');
cin.ignore(,'c');//忽略到c字符位置 保存后面的值
cin.putback('c');//退回c char peek = cin.peek();
cout << "peek"<<peek << endl; cout << buf << endl;
cin.get(buf, , '/'); cout << buf << endl;
system("pause");
}

参数:字符数组 字符个数终止字符
注意:会清空char*指向的内容 如果没有读到n-1个字符或者终止符则会阻塞
3.2 getline
istream& getline(char*,int,char)
与get不同的是在读取n-1字符之前遇到终止字符会提前结束.两者最大不同是get当遇到定界符停止当时bu'hu
cin.getline(buf,1024,'g');
c++中IO输入输出流总结<一>的更多相关文章
- c++中IO输入输出流总结<二>
1 文件的打开和关闭 1.1 定义流对象 ifsteam iflie;//文件输入流对象 ifsteam iflie;//文件输出流对象 fsteam iflie;//文件输入输出流对象 1.2 打开 ...
- 详解Java中的IO输入输出流!
目录 本片要点 基本分类 发展史 文件字符流 输出的基本结构 流中的异常处理 异常处理新方式 读取的基本结构 运用输入与输出完成复制效果 文件字节流 缓冲流 字符缓冲流 装饰设计模式 转换流(适配器) ...
- java.IO输入输出流:过滤流:buffer流和data流
java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? ...
- java io 输入输出流
数据流分类: 流序列中的数据既可以是未经加工的原始二进制数据, 也可以是经一定编码处理后符合某种格式规定的特定数据. 因此Java中的流分为两种: 1) 字节流:数据流中最小的数据单元是字节 2) 字 ...
- IO输入输出流
在Java中进行文件的读写,Java IO流是必备的知识. IO流指 的是输入输出流,用来处理设备上的数据.这里的设备指硬盘,内存,键盘录入,网络传输等. 按处理数据类型来分:字节流和字符流. 按流的 ...
- 全面掌握IO(输入/输出流)
File类: 程序中操作文件和目录都可以使用File类来完成即不管是文件还是目录都是使用File类来操作的,File能新建,删除,重命名文件和目录,但File不能访问文件内容本身,如果需要访问文件本身 ...
- iostream/fstream中的输入输出流指针的绑定,tie函数的使用。
为了兼容c语言的输入输出,c++里面采用tie将输入输出流经行绑定,所以cin/cout并不是独立的.当执行cin时,cout同时会被执行.反之亦然. by defalut,cin is tied ...
- Java中的输入输出流
FileInputStream和FileOutputStream 创建含磁盘文件的输入 输出流对象. FileInputStream继承自InputStream,用于读取本地文件中的字节数据,由于所有 ...
- java IO输入输出流中的各种字节流,字符流类
字节流字节流主要是操作byte类型数据,也byte数组为准,主要操作类就是·字节输出流:OutputStream·字节输入流:InputStream字符流在程序中一个字符等于2个字节,那么java提供 ...
随机推荐
- 笔记11 export to excel
参考两篇博客:http://blog.csdn.net/zyming0815/article/details/5939104 http://blog.csdn.net/g710710/article/ ...
- MyBatis学习(一):简单的运行
1.准备工作 jar包: mybatis-3.4.4.jar,下载地址:https://github.com/mybatis/ignite-cache/releases mysql-connector ...
- Ubuntu 静态IP
linux 用了好多年了,每次设置静态ip都上网查,就是记不住.唉~ cat /etc/network/interfaces auto lo iface lo inet loopback #auto ...
- Python list 和 str 互转
一.list转字符串 命令:''.join(list)其中,引号中是字符之间的分割符,如“,”,“;”,“\t”等等如:list = [1, 2, 3, 4, 5]''.join(list) 结果即为 ...
- (Vue)vue模板语法
Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统. ...
- sap保存时小写字母自己主动转大写字母的解决方法
在实际应用中.ABAP保存数据到后台数据库表中时.会自己主动把前台输入的小写字母自己主动转换为大写字母来保存.有时候客户可能不须要转换,就须要用到以下的方法: 1.找到相应字段的Data ...
- Darwin Streaming Server性能测试报告
为了验证Darwin Streaming Server在流媒体点播上的性能,EasyDarwin开源项目官方特地与国内某大型视频网站进行了一次性能测试(千兆网络环境下),针对本次RTSP直播流媒体测试 ...
- js怎么限制文本框input只能输入数字
1.说明 本篇文章介绍怎么使用js限制文本框只能输入数字 2.HTML代码 <!DOCTYPE html> <html xmlns="http://www.w3.org/1 ...
- wepy原理研究
像VUE一样写微信小程序-深入研究wepy框架 https://zhuanlan.zhihu.com/p/28700207 wepy原理研究 虽然wepy提升了小程序开发体验,但毕竟最终要运行在小程序 ...
- ThinkPHP利用数据库字段做栏目的无限分类
一直以来对cms后台的栏目管理不太理解,尤其是子栏目顶级栏目这种关系,通过网上的搜索与自己的摸索,实现方法如下(原理是利用数据库的path字段): 1.建立简单的栏目表: CREATE TABLE ` ...