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提供 ...
随机推荐
- libpcre.so.0 被删除怎么办?
删除 #rpm -e --nodeps pcre-6.6-1.1 1> wget http://mirror.centos.org/centos/6/os/i386/Packages/pc ...
- CSS盒模型之三角形
W3上介绍盒模型: 这里教程,但是太过于简单了,http://www.w3.org/community/webed/wiki/CSS/Training/Box_model. 如图,盒模型和背景属性控制 ...
- inline-block的使用
inline-block是什么 inline和block是css中元素display属性的两个选项,而inline-block可以说是介于两者之间的属性值. inline使元素成为内联元素(inlin ...
- Chisel辅助iOS 应用程序调试,MusicApp模仿酷狗4.0 UI框架
本文转载至 http://www.cocoachina.com/ios/20140825/9446.html Chisel Chisel集合了大量的LLDB 命令来辅助iOS 应用程序调试,并支持添 ...
- Xcode 6 的新增特性
本文转载至 http://www.cocoachina.com/ios/20140823/9441.html (via:苹果开发者中心) Xcode 6 引入了设计和构建软件的崭新方式.Swift ...
- 理解c/c++指针和引用
1 指针的指针 比如int* a,那么a是指向一个int型的对象的.也就是说,*前面的类型是该指针指向的对象的类型. 同理int** a的话,a指向一个int*型的对象,也就是说,它指向的对象也是一个 ...
- gitlab 外网 无法访问 查端口 看文档
云服务器安装成功后 curl 页面可以正常跳转 重置密码的token 页面可以生成 但是 外网无法 访问 [root@test ~]# curl 127.0.0.1:18021 <htm ...
- [Usaco2005 Dec]Cleaning Shifts 清理牛棚
题目描述 Farmer John's cows, pampered since birth, have reached new heights of fastidiousness. They now ...
- tornado之表单和模板
之前在indexHandler中通过self.write()方法在对应的网页中写入具体的字符信息. 如果我们想直接返回一个网页那么这个时候就需要用到模板了 首先在工程目录下新建一个template文件 ...
- Impala 安装笔记2一hive和mysql安装
l 安装hive,hive-metastore hive-server $ sudo yum install hive hive-metastore hive-server l 安装mysql ...