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输入输出流总结<一>的更多相关文章

  1. c++中IO输入输出流总结<二>

    1 文件的打开和关闭 1.1 定义流对象 ifsteam iflie;//文件输入流对象 ifsteam iflie;//文件输出流对象 fsteam iflie;//文件输入输出流对象 1.2 打开 ...

  2. 详解Java中的IO输入输出流!

    目录 本片要点 基本分类 发展史 文件字符流 输出的基本结构 流中的异常处理 异常处理新方式 读取的基本结构 运用输入与输出完成复制效果 文件字节流 缓冲流 字符缓冲流 装饰设计模式 转换流(适配器) ...

  3. java.IO输入输出流:过滤流:buffer流和data流

    java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? ...

  4. java io 输入输出流

    数据流分类: 流序列中的数据既可以是未经加工的原始二进制数据, 也可以是经一定编码处理后符合某种格式规定的特定数据. 因此Java中的流分为两种: 1) 字节流:数据流中最小的数据单元是字节 2) 字 ...

  5. IO输入输出流

    在Java中进行文件的读写,Java IO流是必备的知识. IO流指 的是输入输出流,用来处理设备上的数据.这里的设备指硬盘,内存,键盘录入,网络传输等. 按处理数据类型来分:字节流和字符流. 按流的 ...

  6. 全面掌握IO(输入/输出流)

    File类: 程序中操作文件和目录都可以使用File类来完成即不管是文件还是目录都是使用File类来操作的,File能新建,删除,重命名文件和目录,但File不能访问文件内容本身,如果需要访问文件本身 ...

  7. iostream/fstream中的输入输出流指针的绑定,tie函数的使用。

      为了兼容c语言的输入输出,c++里面采用tie将输入输出流经行绑定,所以cin/cout并不是独立的.当执行cin时,cout同时会被执行.反之亦然. by defalut,cin is tied ...

  8. Java中的输入输出流

    FileInputStream和FileOutputStream 创建含磁盘文件的输入 输出流对象. FileInputStream继承自InputStream,用于读取本地文件中的字节数据,由于所有 ...

  9. java IO输入输出流中的各种字节流,字符流类

    字节流字节流主要是操作byte类型数据,也byte数组为准,主要操作类就是·字节输出流:OutputStream·字节输入流:InputStream字符流在程序中一个字符等于2个字节,那么java提供 ...

随机推荐

  1. Android 大众点评的接入

    这里介绍的是大众点评的团购中的一个接口.就是全部团购信息,其它的接口的实现是大同小异的. 首先,登录大众点评的开发平台->大众点评 . 然后获取到自己的应用的appkey和secret.这个是 ...

  2. 用字符串处理函数中的比较函数strcmp做的一个密码登录验证

    正确返回0 1大返回正数 2大返回负数  1,2表示输入字符串1和字符串2 根据ASCII码大小来判断 代码: #include<stdio.h> #include<string.h ...

  3. HTML marquee标签

    marquee语法    <marquee></marquee> 实例一<marquee>Hello, World</marquee> marquee常 ...

  4. tween用户使用指南

    tween.js user guide tween.js用户指南 1.What is a tween? How do they work? Why do you want to use them? 一 ...

  5. iOS开发工具篇-AppStore统计工具

    本文转载至 http://mobile.51cto.com/hot-418183.htm 随着iOS开发的流行,针对iOS开发涉及的方方面面,早有一些公司提供了专门的解决方案或工具.这些解决方案或工具 ...

  6. tornado之模板扩展

    当我们有多个模板的时候,很多模板之间其实相似度很高.我们期望可以重用部分网页代码.这在tornado中可以通过extends语句来实现.为了扩展一个已经存在的模板,你只需要在新的模板文件的顶部放上一句 ...

  7. BNUOJ 34978 汉诺塔 (概率dp)

    题目分析:对于 i 个盘 , 须要移动多少步,取决于最大的盘子在哪个杆上.在C杆上,则最大的盘不须要移动,由于初始状态一定是满足盘由下到上盘子依次变小的,仅仅须要移动i - 1个盘.假设在A杆上,则首 ...

  8. python基础知识踩点

    1.注释 在python中,注释是以任何存在于#右侧的文字,其主要作用是写给程序读者看的笔记. 例如 单行注释 >>print("hello world") #这是一个 ...

  9. linux下环境搭建

    1.jdk https://ivan-site.com/2012/05/download-oracle-java-jre-jdk-using-a-script/ 在linux用wget直接下载JDK ...

  10. ubuntu安装ros indigo

    版本是14.04.1 一.先配置 1.点击新立得软件包管理器,输入密码exbot123, 2,点击最上面一栏的设置,选择软件源,前四个打勾,后一个不打,把sevice america改成mainsev ...