文件操作
写在后面
<u>ofstream 写文件,也就是对文件的输入,所以 out,以 O 结尾 </u>
<u>ofstream 的成员函数中蕴含 write 写文件 </u>
<u>ifstream 读文件,也就是文件对外输出,所以 in,以 I 结尾 </u>
<u>ifstream 的成员函数中蕴含 read 读文件 </u>
操作文件蕴含头文件 fstream
类型:
文本文件:ASCLL 存储
二进制文件:二进制存储
操作文件三大类
1、ofstream:写操作
2、ifstream:读操作
3、fstream:读写操作
文本文件操作
写文件
1、蕴含头文件
fstream
2、创立流对象
ofstream ofs
3、关上文件
ofs.open(”文件门路“,” 打开方式 ”);
4、写数据
ofs<<“ 写入的数据 ”;
5、敞开文件
ofs.close
打开方式 | 解释 |
---|---|
ios::in | 为读文件而关上文件 |
ios::out | 为写文件关上文件 |
ios::ate | 初始地位:文件尾 |
ios::app | 追加形式写文件 |
ios::trunc | 如果文件存在先删除,再创立 |
ios::binary | 二进制文件 |
留神:文件打开方式能够配合应用,利用 | 操作符
例如:用二进制形式写文件
ios::binary|ios::out
#include<iostream>
#include<fstream>
using namespace std;
void test()
{
//1、蕴含头文件
//2、创立流对象
ofstream ofs;
//3、关上文件
ofs.open("材料.txt",ios::out);
//4、写数据
ofs << "此情可待成追忆,只是过后已惘然";
//5、敞开文件
ofs.close();}
int main()
{test();
system("pause");
}
总结:
文件操作必须蕴含头文件 fstream
读文件能够利用 ofstream,或者 fstream 类
关上文件时候须要操作文件的门路,以及打开方式
利用 << 能够向文件中写数据
操作结束要敞开文件
读文件
1、蕴含头文件
2、创立流对象
ifstream ifs
3、关上文件判断是否关上
ifs.open(“材料”,iOS::in);
ifs.is_open 返回布尔类型用 if 语句判断文件是否关上胜利
4、读数据 (四种办法)
1/
char buf[1024]={0};
while(ifs>>buf)
{cout<<buf<<endl;}
2/
char buf[1024]={0};
while(ifs.getline(buf,sizeof(buf)))
{cout<<buf<<endl;}
3/
string buf
while(getline(ifs,buf))
{cout<<buf<<endl;}
4/ 不举荐
char c;
while((c=ifs.get())!=EOF)//end of file
{cout<<c;}
5、敞开文件
ifs.close()
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
void test()
{
//1、蕴含头文件
//2、创立流对象
ifstream ifs;
//3、关上文件
ifs.open("材料.txt", ios::in);
if (ifs.is_open() == false)
{cout << "文件关上失败!" << endl;}
//4、读数据
string buf;
while (getline(ifs, buf))
{cout << buf << endl;}
//5、敞开文件
ifs.close();}
int main()
{test();
system("pause");
}
二进制文件操作
写文件
ios::binary
二进制形式写文件次要利用流对象调用成员函数 write
函数原型:ostream& write(const char* buffer ,int len)
参数解释:字符指针 buffer 指向内存中一段存储空间,len 是读写的字节数
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class Person
{
public:
char name[64];
int age;
};
void test()
{
//1、蕴含头文件
//2、创立流对象
ofstream ofs;
// 也能够创立流对象时候间接 ifstream ifs("材料.txt",ios::out|ios::binary);
//3、关上文件
ofs.open("材料.txt", ios::out | ios::binary);// 用二进制的形式关上文件
//4、写文件
Person p = {"张三",18};
ofs.write ((const char*)&p, sizeof(Person));// 依据函数要求,对 p 进行强转
//5、敞开文件
ofs.close();}
int main()
{test();
system("pause");
}
读文件
二进制形式读文件次要利用流对象调用成员函数 read
函数原型 istream& read(char * bufer,int len);
参数解释:字符指针 buffer 指向内存中的一段存储空间,len 是读写的字节数
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class Person
{
public:
char name[64];
int age;
};
void test()
{
//1、蕴含头文件
//2、创立流对象
ifstream ifs;
//3、关上文件
ifs.open("材料.txt", ios::in | ios::binary);
if (ifs.is_open() == false)
{
cout << "文件关上失败!" << endl;
return;
}
//4、读文件
Person p;
ifs.read((char*)&p, sizeof(Person));
cout << "姓名:" << p.name << "年龄" << p.age << endl;
//5、敞开文件
ifs.close();}
int main()
{test();
system("pause");
}