1、第8章 输入/输出流内存内存数据流显示器显示器流对象流对象cout键盘键盘数据流内存内存流对象流对象cin第8章 输入/输出流ostreamiosistreamiftream istrstreamistringstreamoftream ostrstream ostringstream iostreamfstreamstrstream stingstream第8章 输入/输出流第8章 输入/输出流iosistreamostreamifstreamofstreamiostreamfstream 返 回第8章 输入/输出流第8章 输入/输出流 返 回第8章 输入/输出流第8章 输入/输出流#inc
2、lude#include using namespace std;void main()cout 123 endl;cout setw(5)4.5 6.7 endl;第8章 输入/输出流域宽仅适用于下一个数据;域宽仅适用于下一个数据;实际数据比设置的域宽小,将实际数据比设置的域宽小,将右对齐,左补空格右对齐,左补空格#include using namespace std;void main()char*str3=“abc”,“abcde”,“abcdef”;for(int i=0;i 3;i+)cout.width(5);cout stri endl;第8章 输入/输出流第8章 输入/输出流
3、#include#include using namespace std;void main()double values =1.23,15.16,653.7,4358.24;cout setfill(*);for(int i=0;i 4;i+)cout setw(10)valuesi endl;第8章 输入/输出流此语句也可以改为:此语句也可以改为:cout.fill(*);fill()成员函数将返回设置前的填成员函数将返回设置前的填充字符充字符第8章 输入/输出流#include#include using namespace std;void main()double value=31.
4、4142743;int Preprecision=cout.precision(4);cout value endl;cout setprecision(Preprecision)value endl;第8章 输入/输出流通过通过precision成员函数设置精成员函数设置精度后,将以前精度值返回并保存度后,将以前精度值返回并保存在变量在变量Preprecision中。中。注意注意:系统默认精度为:系统默认精度为6,恢复原来的精度设置恢复原来的精度设置第8章 输入/输出流#include#include using namespace std;void main()double value=3
5、1.4142743;cout setiosflags(ios:fixed);int Preprecision=cout.precision(4);cout value endl;cout setprecision(Preprecision)value endl;第8章 输入/输出流设置计数法:以定点法设置计数法:以定点法输出浮点数输出浮点数#include#include using namespace std;void main()double value=31.4142743;cout setiosflags(ios:scientific);int Preprecision=cout.pr
6、ecision(4);cout value endl;cout setprecision(Preprecision)value endl;第8章 输入/输出流设置计数法:以科学计设置计数法:以科学计数法输出浮点数数法输出浮点数第8章 输入/输出流第8章 输入/输出流I/O流格式状态标志#include#include using namespace std;void main()int x=200;cout setiosflags(ios:internal|ios:showpos);cout setw(10)x endl;cout setiosflags(ios:hex|ios:upperca
7、se|ios:showbase);cout setw(10)x endl;cout oct setw(10)x endl;第8章 输入/输出流将将oct直接插入流中,也可使用:直接插入流中,也可使用:setiosflags(ios:oct)第8章 输入/输出流 返 回第8章 输入/输出流第8章 输入/输出流第8章 输入/输出流第8章 输入/输出流第8章 输入/输出流第8章 输入/输出流第8章 输入/输出流#include using namespace std;void main()CRect r;r.SetColor(“Red”);r.Move(10,20);r.SetSize(100,20
8、0);ofstream outfile(“D:a.txt”,ios:out);outfile.write(char*)&r,sizeof(r);outfile.close();/调用close函数关闭文件第8章 输入/输出流定义输出文件流对象并打开文件进行输出定义输出文件流对象并打开文件进行输出将将r地址强制类型转换地址强制类型转换(char*)为字符型指针为字符型指针#include using namespace std;void main()int array =35,42,57,88,69,75;ofstream outfile2(“D:a.txt”,ios:app);outfile2
9、.write(char*)array,sizeof(array);outfile2.close();第8章 输入/输出流在打开的文件尾添加数据在打开的文件尾添加数据将数组首地址强制类型转换将数组首地址强制类型转换无须强制类型转换无须强制类型转换第8章 输入/输出流第8章 输入/输出流第8章 输入/输出流#include#include using namespace std;void main()char array100;ifstream ifs(“E:boot.txt”,ios:nocreate);if(!ifs)return;/如果文件不存在,打开不成功,则结束程序while(!ifs.
10、eof()/eof函数用于判断是否到文件尾,到文件尾返回Trueifs.getline(array,100);/100表示每次读取字符的个数最多为99个cout array endl;ifs.close();第8章 输入/输出流使用使用getline函数按行读取文件中的数据,函数按行读取文件中的数据,每次读取一行时,遇回车符或达到最大字每次读取一行时,遇回车符或达到最大字符个数,则结束,并将读出数据保存于数符个数,则结束,并将读出数据保存于数组组array中。中。第8章 输入/输出流#include#include using namespace std;void main()CRect r2
11、;ifstream ifile(“D:a.txt”);ifile.read(char*)&r2,sizeof(r2);/将读出的数据保存到矩形对象r2中ifile.close();r2.Draw();第8章 输入/输出流第8章 输入/输出流第8章 输入/输出流#include using namespace std;void main()CRect rt;ifstream ifs(“data.txt”);ifs.seekg(0,ios:end);/将指针移动到文件尾将指针移动到文件尾streampos lof=ifs.tellg();/求得文件长度求得文件长度lofifs.seekg(-lof
12、/10,ios:end);/将指针移动到最后一条记录起始位置将指针移动到最后一条记录起始位置ifs.read(char*)&rt,sizeof(CRect);ifs.close();rt.Move(100,100);ofstream ofs(“data.txt”,ios:ate);/以以ios:ate方式打开文件防止删除原来内容方式打开文件防止删除原来内容ofs.seekp(-lof/10,ios:end);/将指针移动到最后一条记录起始位置将指针移动到最后一条记录起始位置ofs.write(char*)&rt,sizeof(CRect);ofs.close();第8章 输入/输出流第8章 输
13、入/输出流第8章 输入/输出流 返 回第8章 输入/输出流#include#include using namespace std;void main()fstream iofile(“E:myfile.txt”,ios:in|ios:app);iofile.seekg(0,ios:end);/定位至文件尾streampos lof=iofile.tellg();/获取文件长度char*data;data=new charlof;/动态分配内存用于保存文件内容iofile.seekg(0,ios:beg);/定位至文件头iofile.read(data,lof);/将文件内容读到data指向的
14、内存中cout “原文件内容为:”endl;第8章 输入/输出流 for(int i=0;ilof;i+)cout datai;/逐个输出data指向内存中的字符cout endl;iofile.write(data,lof);/打开方式为ios:app,能将读出内容写入文件尾delete data;iofile.seekg(0,ios:end);lof=iofile.tellg();data=new charlof;iofile.seekg(0,ios:beg);iofile.read(data,lof);cout “读写操作后文件内容为:”endl;for(i=0;ilof;i+)cout datai;cout endl;iofile.close();delete data;第8章 输入/输出流 返 回