c++第11章·流类库与输入输出

概念

流是信息流动的一种抽象

一种抽象,它负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动

流对象与文件操作:

1、程序建立一个流对象
2、指定这个流对象与某个文件对象建立连接
3、程序操作流对象
4、流对象通过文件系统对所连接的文件对象产生作用

提取与输出

1、读操作在流数据抽象中被称为(从流中)提取
2、写操作被称为向流中插入

输出流

输出流是向文件中打印信息

最重要的三个输出流:
1、ostream
2、ofstream
3、ostringstream

预先定义好的输出流对象:
1、cout:标准输出
2、cerr:标准错误输出,没有缓冲,发送给它的内容立即被输出
3、clog:类似于cerr,但是有缓冲,缓冲区满时被输出

读取一个本地磁盘的文件

如果要使用文件流将信息输出到文件,便需要使用构造函数建立流对象

ofstream myFile;
myFile.open("filename");
ofstream myFile("filename");
ofstream file;
file.open("FILE1");
file.close();
file.open("FILE2");
file.close();

使用插入运算符和操纵符

插入:"<<"

输出宽度:

setw操纵符或调用width成员函数为每个项指定输出宽度

#include <bits/stdc++.h>

using namespace std;

int main(){
	double values[5]={1.23,35.36,653.7,43598.24};
	for(int i=0;i<4;++i){
		cout.width(10);
		cout<<values[i]<<endl;
	}
}

相当于每一个输出的数据设置了10个宽度(默认用空格填充,若超过则按原长度输出)

setw和width仅影响紧随其后的域

#include <bits/stdc++.h>

using namespace std;

int main(){
	double values[5]={1.23,35.36,653.7,43598.24};
	cout.width(10);
	for(int i=0;i<4;++i){	
		cout<<values[i]<<endl;
	}
}

cout.fill('*')

setfill("*")

除了setw和width的流格式以外的流格式保持有效直到发生改变

对齐方式

输出流默认为右对齐文本

cout<<setiosflags(ios_base::left)<<resetiosflags(ios_base::left)

setiosflags操纵符来设置左对齐(ios_base::left是ios_base的静态常量,因此引用时必须包括ios_base::前缀),resetiosflags操纵符关闭左对齐

缓冲区

  • 标准库 提供缓冲是为了减少对read和write的调用(能更高效地处理输入和输出)

  • 缓冲区是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区

精度

浮点数输出精度默认值是6(小数位数加上整数位数总共6位)(会4舍5入)

setprecision设置浮点数小数位数(包括小数点)

ios_base::fixed(强制输出6位小数,例:100.0——100.000000。前提是浮点数)

ios_base::scientific

进制

dec十进制

hex十六进制(默认大写)

oct八进制

文件输出流成员函数

open函数

close函数

put函数

write函数

例子

#include <bits/stdc++.h>
using namespace std;
int main(){
	ofstream file("filename.dat");
	char a[10]={"123456789"};
	file.write(a,10);
    file.put('A');
}

此时,在同目录下,产生一个dat文件,名为filename

文件内容为:

 

seekp和tellp函数

错误处理函数

二进制输出文件

最初设计流的目的是用于文本,因此默认的输出模式是文本方式

字符串输出流

输入流

输入流是从文件读取信息

构造输入流对象

使用提取运算符

输入流操纵符

输入流相关函数

输入流的open函数

输入流的close函数

close成员函数关闭与一个文件输入流关联的磁盘文件

虽然ifstream类的析构函数可以自动关闭文件,但是如果需要使用同一流对象打开另一文件,则首先要用close函数关闭当前文件

get函数

getline函数

read函数

seekg和tellg函数

这些函数简单看看就好了

字符串输入流

它和字符串输出流的区别:

字符串输出流——将变量v的值以string类型转出来(v本身没有变化)

字符串输入流——将string转成v的数据类型写入变量v中(v仍是定义时的类型)

输入输出流 

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值