文件读写

文件读写

创建文件

• #include <fstream>   // 包含头文件
•ofstream outFile(“clients.dat”,ios::out|ios::binary); //创建文件
– clients.dat” 要创建的文件的名字 
 • ios:out 输出到文件, 删除原有内容 
 • ios::app  输出到文件, 保留原有内容,总是在尾部添加 
– ios::binary 以二进制文件格式打开文件
-  ios: :in 以只读的方式打开
-  ios::out 以写的方式打开

 也可以先创建ofstream对象,再用 open函数打开 ofstream fout; fout.open(“test.out”,ios::out|ios::binary);
 判断打开是否成功:
if(!fout){}

文件名可以给出绝对路径,也可以给相对路径。没有交代路径信息, 就是在当前文件夹下找文件

文件名的绝对路径和相对路径

 绝对路径: "c:\\tmp\\mydir\\some.txt"
 相对路径: "\\tmp\\mydir\\some.txt" 
当前盘符的根目录下的tmp\dir\some.txt 
"tmp\\mydir\\some.txt" 当前文件夹的tmp子文件夹
里面的….. "..\\tmp\\mydir\\some.txt" 当前文件
夹的父文件夹下面的tmp子文件夹里面的…..
 "..\\..\\tmp\\mydir\\some.txt" 当前文件夹的父文件夹的父文件夹下面的tmp子文件夹里面的….. 

文件的读写指针
写指针

ofstream fout("a1.out",ios::app); //以添加方式打开
long location = fout.**tellp()**;      //取得写指针的位置 
location = 10;
fout.seekp(location); // 将写指针移动到第10个字节处 
fout.**seekp**(location,**ios::beg**); //从头数location 
fout.seekp(location,**ios::cur**); //从当前位置数location 
fout.seekp(location,**ios::end**); //从尾部数location
**• location 可以为负值**

读指针

ifstream fin(“a1.in”,**ios::ate**); //打开文件,定位文件指针到文件尾 
long location = fin.**tellg()**;   //取得读指针的位置 location = 10L; 
fin.seekg(location); // 将读指针移动到第10个字节处 
fin.seekg(location,ios::beg); //从头数location 
fin.seekg(location,ios::cur); //从当前位置数location 
fin.seekg(location,ios::end); //从尾部数location
**• location 可以为负值**

显示关闭文件
文件打开以后必须关闭

ifstream fin(“test.dat”,ios::in); fin.close();
ofstream fout(“test.dat”,ios::out); fout.close();

二进制文件读写

二进制读文件:

ifstream 和 fstream的成员函数:
istream& read (char* s, long n);

将文件读指针指向的地方的n个字节内容,读
入到内存地址s,然 后将文件读指针向后移动
n字节 (以ios::in方式打开文件时,文件读
指针开始指向文件开头) 。

二进制写文件

ofstream 和 fstream的成员函数:
istream& write (const char* s, long n);
将内存地址s处的n个字节内容,写入到文件中
写指针指向的位置, 然后将文件写指针向后
移动n字节(以ios::out方式打开文件时,文 
件写指针开始指向文件开头, 以ios::app方式打
开文件时,文件写 指针开始指向文件尾部 ) 

在文件中写入和读取一个整数

#include <iostream> 
#include <fstream>
 using namespace std; 
 ofstream fout("some.dat", ios::out | ios::binary); 
 int x=120;
 fout.write( (const char *)(&x), sizeof(int) ); 
 fout.close();
 ifstream fin("some.dat",ios::in | ios::binary); 
 int y;
 fin.read((char * ) & y,sizeof(int)); //强制转换成char型;
 fin.close(); 
 cout << y <<endl; return 0; 

从键盘输入几个学生的姓名的成绩,并以二进制文件形式保存

#include <iostream> 
#include <fstream> 
using namespace std; 
struct Student { 
char name[20];
int score; };
 int main()  { 
 Student s;
 ofstream OutFile("c:\\tmp\\students.dat",ios::out|ios::binary);
 while( cin >> s.name >> s.score )
    OutFile.write( (char * ) & s, sizeof( s) ); OutFile.close(); 
return 0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值