IO类相关

IO类相关,第1张

头文件
iostream   处理标准输入输出
fstream     处理文件的输入输出
sstrema    处理string的输入输出

cin它是以(tab 、space、enter)中的一种作为分隔符,如果开头的数据是分隔符,那么直接把分割符忽略并且清除,直至第一个字符不是分隔符时才开始输入。

getline()不会忽略开头的分隔符,getline遇到结束符时,会将结束符一并读入指定的string中,再将结束符替换为空字符。

IO对象无拷贝或赋值,因此通常用引用方式传递和返回流
流有一些状态位:
eofbit   流到达文件结束 
goodbit  流未处于错误状态
badbit  流已经崩溃
failbit  一个IO *** 作失败了

rdstate()返回一个iostate值对应当前状态
clear ()置位所有状态位  

刷新输出缓冲区 :  endl 输出一个换行并刷新缓冲区
                                flush 刷新缓冲区
                                ends 输出一个空字符刷新缓冲区
unitbuf *** 作符   使每次输出 *** 作都刷新缓冲区       cout< nounitbuf     回到正常缓冲方式                              cout<

关联输入和输出流  当一个输入流被关联到一个输出流时,任何从输入流中读取数据的 *** 作都会先刷新缓冲流。  tie函数

文件流对象:
ios::cur:光标当前位置
seekg():(常用)输入文件指针跳转函数。表示将输入文件指针跳转到指定字节位置。seekp():输出文件指针跳转函数。表示将输出文件指针跳转到指定位置。
ios::in:以读方式打开   文件内容输入到内存
ios::out:写入方式打开   内存中的内容输出到文件
ios::trunc:(常用)覆盖原内容写入
ios::app:(常用)不覆盖,在结尾插入
ios::ate:打开文件后定位到文件尾部
ofstream默认打开方式:ios::out | ios::trunc     文件写 *** 作
ifstream默认打开方式: ios::in                         文件读 *** 作
fstream默认打开方式: ios::in | ios::out

文件读写的过程:  第一步声明流对象 ->调用open(filename,打开方式)打开文件,判断文件是否正常打开 对象.is_open()或者直接对象名->进行读写->关闭文件
使用 *** 作符:“<<”往文本文件中写入数据,使用操作符:“>>”从文本文件中读取数据

    fstream s; //   声明流对象 
	s.open("test.txt", ios::out);//   将流对象与文件关联
	if(s.is_open()){//   判断文件是否正常打开
		s << "test";//   对文件进行操作
	}
	else {
		cerr << "文件打开失败" << endl;
	} 
	s.close();//   关闭文件

对文件进行定位:  

c++文件系统管理着两个与文件相关联的指针:读指针,写指针  (对文件的 *** 作大小都是以字节为单位)
seekg(offset,origin)设置读指针的位置
seekp(offset,origin)设置写指针的位置
offset表示偏移地址,origin表示基址(ios::beg,ios::cur,ios::end)
tellg()  tellp()返回当前指针的值
对文件计算大小
 

        s.seekg(0, ios::beg);//   文件读指针定位到开头
		auto size_beg = s.tellg(); //  或者用streampos   获取指针的值
		s.seekg(0, ios::end);//  文件读指针定位到结尾
		auto size_end = s.tellg();//
		cout << size_end - size_beg;

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/994678.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-21
下一篇2022-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存