#inclass="superseo">clude
创建流对象ofstream ofs;
打开文件ofs.open("文件路径",打开方式);
写数据ofs<<"写入的数据";
关闭文件ofs.close();
其中,写 *** 作第三步的常见打开方式
打开方式 | 解释 |
---|---|
ios::in | 为读文件而打开文件 |
ios::out | 为写文件而打开文件 |
ios::ate | 初始位置:文件尾 |
ios::app | 追加方式写文件 |
ios::trunc | 如果文件存在,那么先删除,再创建 |
ios::binary | 二进制方式 |
注:可以复合这些文件打卡方式,利用| *** 作符就可以了。
如:用二进制方式写文件: ios::binary | ios::out
#include
创建流对象ifstream ifs;
打开文件并判断文件是否打开成功ifs.open("文件路径",打开方式);
读数据四种方式读取关闭文件
ifs.close();
读写示例
#include
#include
using namespace std;
void Text_Write()
{
ofstream ofs;
ofs.open("test.txt",ios::out);
cout<<"执行了一次文本写 *** 作"<<endl;
ofs<<"2022-02-28"<<endl;
ofs.close();
}
void Text_Read_1()
{
ifstream ifs;
ifs.open("test.txt",ios::in);
cout<<"执行了一次文本读 *** 作(方法1)"<<endl;
if(!ifs.is_open())
{
cout<<"文件打开失败"<<endl;
}
//第一种读取方式
char buf[1024]={0};
while(ifs>>buf)
{
cout<<buf<<endl;
}
ifs.close();
}
void Text_Read_2()
{
ifstream ifs;
ifs.open("test.txt",ios::in);
cout<<"执行了一次文本读 *** 作(方法2)"<<endl;
if(!ifs.is_open())
{
cout<<"文件打开失败"<<endl;
}
//第二种读取方式
char buf[1024]={0};
while(ifs.getline(buf,sizeof(buf)))
{
cout<<buf<<endl;
}
ifs.close();
}
void Text_Read_3()
{
ifstream ifs;
ifs.open("test.txt",ios::in);
cout<<"执行了一次文本读 *** 作(方法3)"<<endl;
if(!ifs.is_open())
{
cout<<"文件打开失败"<<endl;
}
//第三种读取方式
string buf;
while(getline(ifs,buf))
{
cout<<buf<<endl;
}
ifs.close();
}
void Text_Read_4()
{
ifstream ifs;
ifs.open("test.txt",ios::in);
cout<<"执行了一次文本读 *** 作(方法4)"<<endl;
if(!ifs.is_open())
{
cout<<"文件打开失败"<<endl;
}
//第四种读取方式
char c;
while((c=ifs.get())!=EOF)
{
cout<<c;
}
ifs.close();
}
int main()
{
Text_Write();
Text_Read_4();
return 0;
}
二进制文件
写 *** 作
包含头文件#include
创建流对象ofstream ofs;
打开文件ofs.open("文件路径",打开方式);
(注:这一步打开方式一定要有一个是ios::binary)写数据ofs<<"写入的数据";
关闭文件ofs.close();
读 *** 作
包含头文件#include
创建流对象ifstream ifs;
打开文件并判断文件是否打开成功ifs.open("文件路径",打开方式);
读数据四种方式读取关闭文件
ifs.close();
读写示例
#include
#include
using namespace std;
class Person
{
public:
char m_Name[64];
int m_Age;
};
void Binary_Write()
{
ofstream ofs;
ofs.open("test.txt",ios::out | ios::binary);
//或者将上两步合成一步。
//ofstream ofs("test.txt",ios::out | ios::binary);
cout<<"执行了一次二进制写 *** 作"<<endl;
Person p ={"张三",18};
ofs.write((const char*)&p, sizeof(Person));
ofs.close();
}
void Binary_Read()
{
ifstream ifs;
ifs.open("test.txt",ios::in | ios::binary);
cout<<"执行了一次二进制读 *** 作"<<endl;
if(!ifs.is_open())
{
cout<<"文件打开失败"<<endl;
}
//读取方式
Person p;
ifs.read((char*)&p, sizeof(Person));
cout<<"姓名:"<<p.m_Name<<endl<<"年龄:"<<p.m_Age<<endl;
ifs.close();
}
int main()
{
Binary_Write();
Binary_Read();
return 0;
}
注意,二进制读写函数原型是这样的:
写:ostream& write(const char* buffer, int len);
读:istream& read(char * buffer, int len);
里面一个是const一个是不加const,所以在使用的时候也要区别开。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)