码迷,mamicode.com
首页 > 编程语言 > 详细

C++文件读写

时间:2015-03-19 20:20:16      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

 技术分享

1 简单读写文件

1 #include <fstream>  
2 ofstream         //文件写操作 内存写入存储设备   
3 ifstream         //文件读操作,存储设备读区到内存中  
4 fstream          //读写操作,对打开的文件可进行读写操作 

写文件用ofstream和ostream方法(如<<),读文件用ifstream和istream方法(如>>),读写文件可以用fstream,具体步骤个人总结为三步走:

写文件:

  1.创建一个ofstream对象     ofstream out;

  2.将对象与文件进行关联      out.open("1.txt");  

  3.用cout方式使用该对象      out<<"123456"; 

其中前两步可以合并为ofstream out("1.txt");

读文件:

  1.创建一个ifstream对象      ifstream in;

  2.将对象与文件进行关联      in.open("1.txt");  

  3.用cout方式使用该对象     string x;   int>>x; 

其中前两步可以合并为ifstream in("1.txt");  

注意:对象名称可以随意命名,不一定非得是in或out。

   文件读写完毕后文件自动关闭,亦可显示的关闭文件的连接,比如in.close();

 

2 文件模式

无论是使用文件名初始化文件流对象还是使用open()方法,都可以指定文件模式的第二个参数

ios::in       打开文件以便读取

ios::out    打开文件以便写入

ios::ate        打开文件移动到文件尾

ios::app       内容追加到文件尾

ios::trunc     删除之前内容再写入

ios::binary    二进制文件

这些方式是能够进行组合使用的,以“或”运算(“|”)的方式:例如

1 fstream out("Hello.txt", ios::in|ios::out)

 

3 一个复制文件的例子

 1 #include <iostream>
 2 #include <fstream>
 3 #include <cstdlib>
 4 
 5 using namespace std;
 6 void cpf(char *a,char *b);
 7 
 8 int main()
 9 {
10     char sourcefile[100];
11     char copyfile[100];
12     cout<<"请输入要复制的文件路径"<<endl;
13     cin>>sourcefile;
14     cout<<"请输入要粘贴的文件路径"<<endl;
15     cin>>copyfile;
16 
17     cpf(sourcefile,copyfile);
18 
19     return 0;
20 }
21 
22 void cpf(char *a,char *b)
23 {
24     fstream in(a,ios::in | ios::binary);
25     if(!in.is_open())
26     {
27         cerr<<"源文件不存在"<<endl;
28         exit(EXIT_FAILURE);
29     }
30     fstream out(b,ios::out | ios::binary);
31     if(!in.is_open())
32     {
33         cerr<<"路径错误"<<endl;
34         exit(EXIT_FAILURE);
35     }
36     out<<in.rdbuf();
37     cout<<"文件复制成功"<<endl;
38 }

 需要注意的地方

1.文件路径是char数组,传递参数时应该将形参设为指针

2.复制文件应该用ios::binary(二进制模式),原因是使用二进制文件模式时,程序将数据从内存传递给文件,将不会发生任何隐藏的转换,而默认状态下是文本模式,复制的内容可能会发生改变(参见c++ primer plusP695)

3.关于 rebuf():复制文件时是从一个流对象复制流入另外一个流对象,需要使用rebuf(),rebuf()的功能就是使流重定向

4.exit(EXIT_FAILURE)相当于exit(1),exit(EXIT_SUCCESS)相当于exit(0)

C++文件读写

标签:

原文地址:http://www.cnblogs.com/raichen/p/4350664.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!