十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
程序运行时产生的数据都属于零食数据,程序一旦运行结束,就会被释放
创新互联建站主要从事网站设计、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务丰县,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
通过文件可以将数据持久化
C++中对文件的操作包含头文件
文件类型分为两种
操作文件的三大类
包含头文件
#include
创建流对象
ofstream ofs;
打开文件
ofs.open("文件路径",打开方式);
写数据
ofs << "写入的数据";
关闭文件
ofs.cloSe()
#include
#include //添加头文件
using namespace std;
void test01(){
ofstream ofs; //创建流对象
ofs.open("test.txt",ios::out); //打开的地址和方式
ofs << "你好" << endl; //文件的内容
ofs.close(); //关闭文件
}
int main(int argc, char** argv) {
test01();
return 0;
}
步骤相对于写文件多一点
包含头文件
#include
创建流对象
ifstream ifs;
打开文件并判断释放打开成功
ifs.open("文件路径",打开方式);
if(!ifs.is_open()){
cout << "文件打开失败" << endl;
return;
}else{...}
读数据
一共四种...
关闭文件
ifs.cloSe()
#include
#include
#include
using namespace std;
void test01(){
ifstream ifs;
ifs.open("test.txt",ios::in);
if(!ifs.is_open()){ //判断是否打开成功
cout << "文件打开失败" << endl;
return;
}else{
//第一种
// char buf[1024] = {0};
// while(ifs >> buf){ //将ifs的数据放入buf中,当数据读完时,返回false,结束循环(不读取数据)
// cout << buf <
在上面代码的基础上将已经创建好的test.txt文件复制到test1.txt文件下
#include //添加头文件
#include
#include
using namespace std;
void test01(){
ofstream ofs; //创建对象
ifstream ifs;
ifs.open("test.txt",ios::in); //路径和方式
ofs.open("test1.txt",ios::out);
if(!ifs.is_open()){ //复制过程
cout << "文件打开失败" << endl; //判断是否打开成功
return;
}else{
string buf;
while(getline(ifs,buf)){ //读文件
ofs << buf << "(test.txt复制成功)" << endl; //写(复制)文件
// 添加标识,判断复制是否成功
}
}
ofs.close(); //关闭文件
ifs.close();
}
int main(int argc, char** argv) {
test01();
return 0;
}
在以二进制读、写文件的时候要加多加一个‘ios::binary’
二进制方式读文件主要利用流对象调用函数write(读出的部分数据看不懂没有关系,只要还能读回来就可以啦)
函数类型:ofs.write((const char *) &buffer,int len);
参数解释:buffer指向内存中的一段数据;len是要读取的字节数
#include
#include
using namespace std;
class Person{ //写个类读读
public:
char m_Name[64]; //最好用char
int m_Age;
};
void test01(){
ofstream ofs("Person.txt",ios::binary | ios::out); //可以一步写哦
//ofs.open("Person.txt",ios::binary | ios::out);
Person p = {"Tom" ,18}; //造个对象
ofs.write((const char*)&p,sizeof(p)); //用write函数读出来
ofs.close();
}
int main(int argc, char** argv) {
test01();
return 0;
}
二进制方式读文件主要利用流对象调用函数read
函数类型:ofs.read((const char *) &buffer,int len);
参数解释:buffer指向内存中的一段数据;len是要读取的字节数
#include //是同一个Person,年龄是20咯(类哦)
#include //我把读的也写进来了,这样更灵活一点
using namespace std;
class Person{
public:
char m_Name[64];
int m_Age;
};
void test01(){
//写文件
ofstream ofs("Person.txt",ios::binary | ios::out); //可以一步写哦
//ofs.open("Person.txt",ios::binary | ios::out);
Person p = {"Tom" 20}; //改个对象的参数()
ofs.write((const char*)&p,sizeof(p));
ofs.close();
//读文件
ifstream ifs("Person.txt",ios::binary | ios::in);
if(!(ifs.is_open())){
cout << "文件打开失败" << endl;
return;
}else{
Person p;
ifs.read((char*)&p,sizeof(p));
cout << p.m_Name << p.m_Age <
为进一步验证是对同一个文件操作,可以做如下检验
else{
Person p = {"Petter",250};//再次修改
ifs.read((char*) &p,sizeof(p));
cout << p.m_Name << p.m_Age <