大家可以给我推荐一下简单经济学教材推荐点的视频会议软件系统吗?

c++读写文件流实例程序讲解
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了c++读写文件流实例,大家参考使用吧
掌握文本文件读写的方法了解二进制文件的读写方法
C++文件流: 代码如下:fstream  // 文件流ifstream  // 输入文件流ofstream  // 输出文件流//创建一个文本文件并写入信息//同向屏幕上输出信息一样将信息输出至文件#include&iomanip.h&#include&fstream.h&void main(){  ofstream f1("d:\\me.txt");           //打开文件用于写,若文件不存在就创建它  if(!f1)                 //打开文件失败则结束运行  f1&&setw(20)&&"姓名:"&&"廉东方"&&     //使用插入运算符写文件内容  f1&&setw(20)&&"家庭地址:"&&"河南郑州"&&  f1.close();                   //关闭文件}
运行后打开文件d:\me.txt,其内容如:姓名:廉东方家庭地址:河南郑州文件操作:打开文件文件名注意路径名中的斜杠要双写,如:"D:\\MyFiles\\ReadMe.txt"文件打开方式选项:ios::in= 0x01, //供读,文件不存在则创建(ifstream默认的打开方式)ios::out  = 0x02, //供写,文件不存在则创建,若文件已存在则清空原内容(ofstream默认的打开方式)ios::ate  = 0x04, //文件打开时,指针在文件最后。可改变指针的位置,常和in、out联合使用ios::app  = 0x08, //供写,文件不存在则创建,若文件已存在则在原文件内容后写入新的内容,指针位置总在最后ios::trunc = 0x10, //在读写前先将文件长度截断为0(默认)ios::nocreate = 0x20, //文件不存在时产生错误,常和in或app联合使用ios::noreplace = 0x40, //文件存在时产生错误,常和out联合使用ios::binary= 0x80  //二进制格式文件文件保护方式选择项:filebuf:: //默认的兼容共享方式filebuf::sh_  //独占,不共享filebuf::sh_  //读共享filebuf::sh_ //写共享打开文件的方法调用构造函数时指定文件名和打开模式ifstream f("d:\\12.txt",ios::nocreate); //默认以 ios::in 的方式打开文件,文件不存在时操作失败ofstream f("d:\\12.txt");  //默认以 ios::out的方式打开文件fstream f("d:\\12.dat",ios::in|ios::out|ios::binary); //以读写方式打开二进制文件使用Open成员函数f.open("d:\\12.txt",ios::out); //利用同一对象对多个文件进行操作时要用到open函数检查是否成功打开成功:if(f){...} //对ifstream、ofstream对象可用,fstream对象不可用。if(f.good()){...}失败:if(!f){...} // !运算符已经重载if(f.fail()){...}读写操作使用&&,&&运算符只能进行文本文件的读写操作,用于二进制文件可能会产生错误。使用函数成员 get、put、read、write等经常和read配合使用的函数是gcount(),用来获得实际读取的字节数。读写二进制文件注意事项打开方式中必须指定ios::binary,否则读写会出错用read\write进行读写操作,而不能使用插入、提取运算符进行操作,否则会出错。使用eof()函数检测文件是否读结束,使用gcount()获得实际读取的字节数关闭文件使用成员函数close,如:f.close(); 利用析构函数对象生命期结束时会检查文件是否关闭,对没有关闭的文件进行关闭操作。随机读写文件通过移动文件读写指针,可在文件指定位置进行读写。seekg(绝对位置);//绝对移动,//输入流操作seekg(相对位置,参照位置);  //相对操作tellg();//返回当前指针位置seekp(绝对位置);//绝对移动,//输出流操作seekp(相对位置,参照位置);  //相对操作 tellp();//返回当前指针位置参照位置:ios::beg= 0 //相对于文件头ios::cur= 1 //相对于当前位置ios::end= 2 //相对于文件尾读写文本文件的示例/为能够正确读出写入文件的各数据,各数据间最好要有分隔
代码如下:#include&fstream.h&void main(){fstream f("d:\\try.txt",ios::out);f&&1234&&' '&&3.14&&'A'&&"How are you"; //写入数据f.close();f.open("d:\\try.txt",ios::in);char s[20];f&&i&&d&&c; //读取数据f.getline(s,20);cout&&i&& //显示各数据cout&&d&&cout&&c&&cout&&s&&f.close();}
运行结果:
12343.14AHow are youPress any key to continue
显示文本文件的内容
使用get()一次读一个字符--------------------------------方案一
代码如下:#include&fstream.h&void main(){ifstream fin("d:\\简介.txt",ios::nocreate);if(!fin){cout&&"File open error!\n";}while((c=fin.get())!=EOF)cout&&c;  //注意结束条件的判断fin.close();}
//使用get(char *,int n,char delim='\n')一次读多个字符----方案二//巧妙利用文本文件中不会有字符'\0'的特点进行读取#include&fstream.h&void main(){ifstream fin("d:\\简介.txt",ios::nocreate);if(!fin){cout&&"File open error!\n";}char c[80];while(fin.get(c,80,'\0')!=NULL)cout&&c; //注意结束条件的判断fin.close();}//使用read(char *,int n)读文件---------------------------方案三#include&fstream.h&void main(){ifstream fin("d:\\简介.txt",ios::nocreate);if(!fin){cout&&"File open error!\n";}char c[80];while(!fin.eof())  //判断文件是否读结束{fin.read(c,80);cout.write(c,fin.gcount()); }fin.close();}
拷贝文件二进制文件操作示例 代码如下:#include&fstream.h&void main(){ifstream fin("C:\\1.exe",ios::nocreate|ios::binary);if(!fin){cout&&"File open error!\n";}ofstream fout("C:\\2.exe",ios::binary);char c[1024];while(!fin.eof()){fin.read(c,1024);fout.write(c,fin.gcount());}fin.close();fout.close();cout&&"Copy over!\n";}
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具扫二维码下载作业帮
1.75亿学生的选择
下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
C++中的高次根号下怎么写,比如说12次根号下a,用什么函数.
扫二维码下载作业帮
1.75亿学生的选择
引入一个头文件.语句pow(a,b)表示a的b次方,比如pow(a,(1.0/12));
为您推荐:
其他类似问题
扫描下载二维码使用getline函数如何多次读取同一行_c++吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:275,297贴子:
使用getline函数如何多次读取同一行收藏
这是程序中的一段代码input.getline(buf,4); a=atoi(buf); input.getline(buf,5); ex=atoi(buf); input.getline(buf,7); num=atoi(buf);这是数据444 111 9999输出后只有444 很明显后面没读到 后来网上查到我知道getline每次只读取一行并且自动加上\n这样接下去读取的就是下一行 怎样让它接下去读取同一行呢再后来我又发现不仅仅是同一行的问题如果将数据改为:444*(后面随意多出一个东西包括空格)1119999就不可以也就是说如果遇到所读取的数据大于它的最大值(input.getline(buf,4);)4.就无法读入下面的数据 怎么解决又查到如果输入的数据大于i会发出溢出,程序就会错乱,是不是这样的?PS:此程序是从书上看到的《C++ programming Today》,那为为什么书上这样的格式就可以 而我的不行 注:代码无错刚自学C++没多久若有人能解答在下感激不尽 !
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或&&/&&&&/&&&&/&&&&/&&
getline函数的作用是从输入流中读取一行字符,其用法与带3个参数的get函数类似。即
& & cin.getline(字符数组(或字符指针), 字符个数n, 终止标志字符)
[例13.7] 用getline函数读入一行字符。
#include &iostream&
int main( )
char ch[20];
cout&&&enter a sentence:&&&
cout&&&The string read with cin is:&&&ch&&
cin.getline(ch,20,'/');
//读个字符或遇'/'结束
cout&&&The second part is:&&&ch&&
cin.getline(ch,20);
//读个字符或遇'/n'结束
cout&&&The third part is:&&&ch&&
程序运行情况如下:
enter a sentence: I like C++./I study C++./I am happy.L
The string read with cin is:I
The second part is: like C++.
The third part is:I study C++./I am h
请仔细分析运行结果。用&cin&&&从输入流提取数据,遇空格就终止。因此只读取 一个字符'I',存放在字符数组元素ch[0]中,然后在ch[1]中存放'\0'。因此用&cout&&ch&输出时,只输出一个字符'I'。然后用cin.getline(ch, 20, '/')从输入流读取19个字符 (或遇结束)。请注意:此时并不是从输入流的开头读取数据。在输入流中有一个字符指针,指向当前应访问的字符。在开始时,指针指向第一个字符,在读入第一个字符'I'后,指针就移到下一个字符('I'后面的空格),所以getline函数从空格读起,遇到就停止,把字符串& like c++.&存放到ch[0]开始的10个数组元素中,然后用&cout&&ch&输出这10个字符。注意:遇终止标志字符&/&时停止读取并不放到数组中。再用cin.getline(ch, 20)读19个字符(或遇'/n'结束),由于未指定以'/'为结束标志,所以第2个'/'被当作一般字符读取,共读入19个字符,最后输出这19个字符。
有几点说明并请读者思考:
1) 如果第2个cin.getline函数也写成cin. getline(ch, 20, '/''),输出结果会如何? 此时最后一行的输出为:
& & The third part is: I study C++.
2) 如果在用cin.getline(ch, 20, '/')从输入流读取数据时,遇到回车键(&\n&),是否 结束读取?结论是此时&\n&不是结束标志&\n&被作为一个字符被读入。
3) 用getline函数从输入流读字符时,遇到终止标志字符时结束,指针移到该终止标志字符之后,下一个getline函数将从该终止标志的下一个字符开始接着读入,如本程序运行结果所示那样。如果用cin.get函数从输入流读字符时,遇终止标志字符时停止读取,指针不向后移动,仍然停留在原位置。下一次读取时仍从该终止标志字符开始。这是getline函数和get函数不同之处。假如把例13.7程序中的两个cin.line函数调用都改为以下函数调用:
& & cin.getline(ch, 20, '/');
则运行结果为:
enter a sentence: I like C++./I study C++./I am happy.L
The string read with cin is: I
The second part is: like C++.
The third part is: & &(没有从输人流中读取有效字符)
第2个cin. getline(ch, 20, '/')从指针当前位置起读取字符,遇到的第1个字符就是终止标志字符读入结束,只把&\0&存放到ch[0]中,所以用&cout&&ch&输出时无字符输出。
因此用get函数时要特别注意,必要时用其他方法跳过该终止标志字符(如用后面介绍的ignore函数,详情请查看:),但一般来说还是用getline函数更方便。
4) 请比较用&cin&&&和用成员函数cin.getline()读数据的区别。用&cin&&&读数据时以空白字符(包括空格、tab键、回车键)作为终止标志,而用cin.getline()读数据时连续读取一系列字符,可以包括空格。用&cin &&&可以读取C++的标准类型的各类型数据(如果经过重载,还可以用于输入自定义类型的数据),而用cin.getline()只用于输入字符型数据。

我要回帖

更多关于 经济学教材推荐 的文章

 

随机推荐