C++语法笔记 – 流类库与IO
本文由发表于6年前 | C++ | 暂无评论 |  被围观 4,872 views+

I/O流类库中有两组类模板实例:面向宽字符的和面向窄字符的。面向宽字符的类支持多字节的字符,面向窄字符的类支持单字节字符。

输出流:

最重要的三个输出流是 ostream, ofstream和ostringstream。
预定义的ostream类对象用来完成向标准设备的输出,包括:

cout 标准输出;
cerr 标准错误输出,没有缓冲,发送给它的内容立即被输出
clog 类似于cerr,但是有缓冲,缓冲区满时被输出

ofstream类支持磁盘文件输出。如果需要一个只输出地磁盘文件,可以构造一个ofstream类的对象。

如果仅使用预先定义的cout,cerr或clog对象,就不需要构造一个输出流。

构造输出文件流的常用方法:

ofstream myFile;
myFile.open(“filename”,iosmode);

ofstream * pmyFile = new ofstream;
pmyFile -> open(“filename”,iosmode);
或在调用构造函数时指定文件名和模式
ofstream myFile(“filename”,iosmode);

插入运算符和操纵符的使用

插入(<<)运算符时所有标准C++数据类型预先设计的,用于传送字节都一个输出流对象。插入运算符和预先定义的操纵符一起工作,可以控制输出格式。

很多操纵符都定义字ios_base类中和<iomanip>头文件中。

1、设置输出宽度:

使用width()函数控制输出宽度:cout.width(10); cout.fill(‘*’);

使用setw操纵符指定输出宽度:cout << setw(6) <<”123”<< setw(10) <<”abc” << endl;

2、对齐方式

cout << setiosflags(ios_base :: left) << setw(10) << “name” << endl;

3、精度

cout<<setprecision(1)<<value<<endl;

4、进制

dec、oct和hex操纵符设置输入和输出地默认进制

输出文件流成员函数:

1、输出流的open函数
2、输出流的close函数
3、put函数:

cout.put(‘A’);

4、write函数

write把一个内存中的一块内容写到一个输出文件流中,长度参数指出写的字节数:

Date dt = {1,2,3};  //Date为一个结构体
ofstream tfile(“date.dat”, ios_base :: binary);
tfile.write((char *) &dt, sizeof dt);
tfile.close();

5、seekp和tellp

seekp设置指向输出文件流下一次写数据的位置的指针,tellp成员函数返回该文件位置指针值。

6、错误处理函数

bad fail good eof clear rdstate

二进制输出文件:

最初设计流的目的是永远文本,因此默认的输出模式是文本方式。在以文本模式输出时,如果遇到换行符便自动扩充为回车换行符这种自动扩充有时可能出现问题。这时,可以使用二进制模式输出到文件:

ofstream tfile(“date.dat”, ios_base :: binary);
tfile.write((char *) &dt, sizeof dt);
输入流:

一个输入流类对象时数据流出的源头,三个最重要的输入流类是 istream ifstream 和 istringstream。

构造输入流对象:

如果仅使用cin对象,则不需要构造输入流对象如果要使用文件流从文件中读取数据,就必须构造一个输入流对象:

1、使用open打开文件:

ifstream myFile;
myFile.open(“filename”,iosmode);

2、在构造函数中指定文件名和模式:

ifstream myFile(“filename”,iosmode);
使用提取运算符:

提取运算符(>>)对所有标准C++数据类型都是预先设计好的,它是从一个输入流对象获取字节最容易的方法。

提取运算符是用于格式化文本输入的,在提取数据时,以空白符为分隔。要输入包含空格的文本,可以使用非格式化输入成员函数getline()。

输入流成员函数:

1、输入流的open函数
2、输入流的close函数
3、get函数:

cin.get();

4、getline函数:

char line[100];
cin.getline(line,100,’t’);   //连续输入一串字符,遇到‘t’时停止,字符个数最多不超过99个
cout << line;

5、read函数:

read成员函数从一个文件读字节到一个指定的存储器区域,由长度参数确定要读的字节数。

ifstrem is(“payroll”,ios_base::binary);
if(is){
	is.read((char *)&employee1, sizeof(employee1)); //employee1为一个结构体变量
} else {
	cout << “ERROR: cannot open file ‘payroll’.” << endl;
}
is.close();

6、seekg和tellg函数

在输入文件流中,保留着一个指向文件中下一个将读数据的位置的内部指针,可以用seekg函数来设置这个指针。

tellg成员函数返回当前文件读指针的位置,这个值时streampos类型。

除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/c-syntax-notes-and-io-stream-library.html
关键字: , ,
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 9/3
如果您有更好的原创技术博文或者观点,欢迎投稿:admin@itzhai.com,或者关注订阅左侧浮动面板的微信号订阅IT宅itread)发送消息。
C++推荐专题
C++
文章评论
    没有评论
给我留言

有人回复时邮件通知我
C++的相关文章
随机文章 本月热门 热评
1 Javascript Web Application笔记之MVC和类 – 类的继承 函数调用 匿名函数 作用域 类库介绍 2012/6/23
2 汇编中的大小写字母转换的方法 2011/4/16
3 Hibernate Generic DAO的介绍安装和使用 2011/12/27
4 密码保护:2014年计划和执行情况 2014/1/1
5 CompletionService的介绍和使用 2012/7/30
6 Java Web笔记 – Servlet技术介绍 生命周期 核心API 类方法调用顺序 2011/11/10
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.