[C++]文件读写操作

首先,在文件中必须包含<fstream>, 它为<iostream>的扩展,即在<fstream>中已经包含了<iostream>。C++中使用文件操作类来实现文件的输入输出。

1、 ASCII文件写操作:

ofstream fout;
 fout.open("file1.txt");//打开文件

 int number = 123;
 char name[] = "James";

 fout<<"Here is a number: "<<num<<"/n";
 fout<<"Here is a string: "<<name<<"/n";//写入文件

 fout<<flush;//回写缓冲区(回写缓冲区会在保持文件打开的情况下保存文件)
 fout.close();//关闭

 //操作后文件file1如下:

 /******************file1.txt************************
 Here is a number: 123
 Here is a string: James
 ****************************************************/

 2、 ASCII文件读操作:

 /******************file2.txt************************
 123
 James
 12.3
 A
 Here is a string: James
 ****************************************************/
 int intager;
 float real;
 char letter, word[8];

 ifstream fin("file2.txt");
 fin>>intager;
 fin>>word;
 fin>>real;
 fin>>letter;

 fin>>intager>>word>>real>>letter;

 char str[101];
 fin.getline(str,100);

//文件的读操作时,要注意>> 与getline混合使用时容易产生的错误,可参见本blog中“>>后使用getline的错误”一文

 //二进制文件的读写
3、 写文件操作-----
 /*****************二进制文件最好的地方是可以在一行把一个结构写入文件*********************/
 ofstream fout("file3.dat", ios::binary);


 /* "ios::binary"是你提供的打开选项的额外标志. 默认的, 文件以ASCII方式打开, 不存在则创建,
  * 存在就覆盖. 这里有些额外的标志用来改变选项。
  * ios::app 添加到文件尾
  * ios::ate 把文件标志放在末尾而非起始。
  * ios::trunc 默认. 截断并覆写文件。
  * ios::nocreate 文件不存在也不创建。
  * ios::noreplace    文件存在则失败。
  */

 struct OBJECT {
  int number;
  char letter;
 }obj;

 obj.number = 15;
 obj.letter = 'M';
 fout.write((char *)(&obj),sizeof(obj));
 /* 第一个参数写做"(char *)(&number)". 这是把一个整型变量转为char *指针。第二个参数写作
  * "sizeof(number)". sizeof() 返回对象大小的字节数                                   */

 //文件读入
 ifstream fin("file3.dat", ios::binary);

 fin.read((char *)(&obj), sizeof(obj));

 /* 文件操作其它函数:
  * eof()  判断当前是否是文件末尾
  * fin.ignore(100, ‘/n’);
  * 方法ignore(int,char) 跳过一定数量的某个字符, 但你必须传给它  * 两个参数。第一个是需
  * 要跳过的字符数。 第二个是一个字符, 当遇到的时候就会停止。
  */ 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值