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. 笔记12 export to excel (NPOI)

    1:filestream 熟悉关于文件操作 ==>fs.Seek(0, SeekOrigin.Begin);//每次打开文件, ==>若果重写覆盖的话,必须先清空 fs.SetLength ...

  2. uboot下载地址

    非常奇怪百度搜索都搜不到一个好的uboot下载的说明,仅此标记 HOME http://www.denx.de/wiki/U-Boot/SourceCode sourcecode http://www ...

  3. ubuntu 14.04 LTS 安装webbentch压力測试工具

    近期在做 压力測试工具,除了apache的ab測试工具外,发现webbentch工具也不错,这里简介下这两个工具. 一.webbentch安装: wget http://blog.s135.com/s ...

  4. python--面向对象封装

    from collectoins import namedtuple Point=namedtuple('point',['x','y']) t1=Point(1,2) print(t1.x) pri ...

  5. Canvas学习笔记——动画中摩擦力的运用

    摩擦力是与物体运动方向相反的力.我们在处理物体运动时,常把物体分解水平(X轴)方向和竖直(Y轴)方向的运动(比如平抛运动),但在处理摩擦力时,如果把摩擦力分解为X轴和Y轴上的阻力,就会出现某条轴上速度 ...

  6. 【TensorFlow-windows】(零)TensorFlow的"安装"

    Tensorflow的安装,具体操作就不演示了.具体操作请移步: http://blog.csdn.net/darlingwood2013/article/details/60322258#comme ...

  7. 解读OC中的load和initialize

    在 Objective-C 中,NSObject 是绝大多数类的基类.而在 NSObject 中有两个类方法 load 和 initialize,那这两个方法是在什么时机被调用呢?父类.Categor ...

  8. 学习某些API的方法

    学习某些 API 的方法 这里的 API 可能是某个系统平台,开发包,开发平台,开发工具等等,因为任何系统和技术方法提供给开发者的打包方式都是一系列 API . 无论你有在哪一层级开发,从硬件驱动到系 ...

  9. 1069: [SCOI2007]最大土地面积

    1069: [SCOI2007]最大土地面积 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 2961  Solved: 1162[Submit][Sta ...

  10. Elasticsearch + Logstash + Kibana 搭建教程

    # ELK:Elasticsearch + Logstash + Kibana 搭建教程 Shipper:日志收集者.负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来,输出到Redis暂存 ...