文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C++文件的数据写入和文件的数据读取怎么实现

2023-07-02 10:09

关注

这篇文章主要介绍了C++文件的数据写入和文件的数据读取怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++文件的数据写入和文件的数据读取怎么实现文章都会有所收获,下面我们一起来看看吧。

一:没有数据,准备数据,写入文件

main.cpp

#include<iostream>using namespace std;#include<fstream>#include<string>#include<list>#include"CData.h"#include"CStaff.h" int main(){CData::userInit();//数据初始化return 0;}

CStaff.h

#ifndef CSTAFF_H#define CSTAFF_H#define ADMIN 1#define MANAGER 2#define WAITER 3#include<string>#include<iostream>using namespace std; class Staff{public:Staff();Staff(int id,string name,string pwd,int prole);~Staff();int getId();string getName();string getPwd();int getRole();private:int ID;string name;string pwd;int role;}; #endif

CStaff.cpp

#include"CStaff.h"#include<iostream>using namespace std; Staff::Staff(){} Staff::Staff(int id,string name,string pwd,int prole){this->ID = id;this->name = name;this->pwd = pwd;this->role = prole;} int Staff::getId(){return this->ID;} string Staff::getName(){return this->name;} string Staff::getPwd(){return this->pwd;} int Staff::getRole(){return this->role;} Staff::~Staff(){}

CData.h

#ifndef CDATA_H#define CDATA_H#include<list>#include"CStaff.h" //专门用来做数据准备  文件存储在磁盘中 程序运行在内存中//缓存区 链表 向量    适合什么样的容器class CData{public://静态:不通过对象 属于类 类名::静态成员/静态函数static list<Staff> staffList;static void userInit();      //用户数据初始化}; #endif

CData.cpp

#include"CData.h"#include<fstream>#include<iostream>using namespace std; list<Staff> CData::staffList; //静态成员的初始化 //实现类的静态函数void CData::userInit(){fstream fs;//文件流对象  in从文件中读出 out写入文件 app追加fs.open("user.txt",fstream::in | fstream::out |fstream::app);//目标读文件 文件指示器需要定在开头//如果没有数据 定位到文件尾部 获取文件大小fs.seekg(0, ios::end);//计算文件中的字节数int count = fs.tellg();//创建一个迭代器list<Staff>::iterator it;if(count<=0){cout<<"没有数据,准备数据,写入文件"<<endl;CData::staffList.push_back(Staff(1001,"admin","123",ADMIN));CData::staffList.push_back(Staff(1002,"lily","123",MANAGER));for(it = CData::staffList.begin();it!=CData::staffList.end();it++){//fs写入 每个元素是对象.运算符获取//每个数据一行 用空格隔开fs<<(*it).getId()<<" "<<(*it).getName()<<" "<<(*it).getPwd()<<" "<<(*it).getRole()<<endl;}}}

结果:

C++文件的数据写入和文件的数据读取怎么实现

二:读文件操作

CData.cpp

#include"CData.h"#include<fstream>#include<iostream>using namespace std; list<Staff> CData::staffList; //静态成员的初始化 //实现类的静态函数void CData::userInit(){fstream fs;//文件流对象  in从文件中读出 out写入文件 app追加fs.open("user.txt",fstream::in | fstream::out |fstream::app);//目标读文件 文件指示器需要定在开头//如果没有数据 定位到文件尾部  获取文件大小fs.seekg(0, ios::end);//计算文件中的字节数int count = fs.tellg();//创建一个迭代器list<Staff>::iterator it;if(count<=0){cout<<"没有数据,准备数据,写入文件"<<endl;CData::staffList.push_back(Staff(1001,"admin","123",ADMIN));CData::staffList.push_back(Staff(1002,"lily","123",MANAGER));for(it = CData::staffList.begin();it!=CData::staffList.end();it++){fs<<(*it).getId()<<" "<<(*it).getName()<<" "<<(*it).getPwd()<<" "<<(*it).getRole()<<endl;}}else{//目标读文件 文件指示器定位到开头fs.seekg(0,ios::beg);char buf[256] = {0};int id = 0,role = 0;char pwd[10]={0};char name[10]={0};while(fs.peek()!=EOF)//EOF是读到末尾{//没有读到最后 每一行都读取fs.getline(buf,256);//sscanf读到数据 使用空格进行拆分sscanf(buf,"%d %s %s %d",&id,name,pwd,&role);//拆分出来的数据 放入链表中CData::staffList.push_back(Staff(id,name,pwd,role));}for(it = CData::staffList.begin();it!=CData::staffList.end();it++)//验证是否读对{cout<<(*it).getId()<<" "<<(*it).getName()<<" "<<(*it).getPwd()<<" "<<(*it).getRole()<<endl;}}}

C++文件的数据写入和文件的数据读取怎么实现

结果:读到的是文件中的正确信息

关于“C++文件的数据写入和文件的数据读取怎么实现”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“C++文件的数据写入和文件的数据读取怎么实现”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯