" />

欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++文件的數(shù)據(jù)寫(xiě)入和文件的數(shù)據(jù)讀取的方法實(shí)現(xiàn)

 更新時(shí)間:2022年06月16日 10:06:17   作者:想吃讀研的苦  
本文主要介紹了C++文件的數(shù)據(jù)寫(xiě)入和文件的數(shù)據(jù)讀取的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一:沒(méi)有數(shù)據(jù),準(zhǔn)備數(shù)據(jù),寫(xiě)入文件

1.main.cpp

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

2.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
 

3.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()
{
}
 
 

4.CData.h

#ifndef CDATA_H
#define CDATA_H
#include<list>
#include"CStaff.h"
 
//專門(mén)用來(lái)做數(shù)據(jù)準(zhǔn)備  文件存儲(chǔ)在磁盤(pán)中 程序運(yùn)行在內(nèi)存中
//緩存區(qū) 鏈表 向量    適合什么樣的容器
class CData
{
public:
	//靜態(tài):不通過(guò)對(duì)象 屬于類(lèi) 類(lèi)名::靜態(tài)成員/靜態(tài)函數(shù)
	static list<Staff> staffList;
	static void userInit();      //用戶數(shù)據(jù)初始化
};
 
#endif

5.CData.cpp

#include"CData.h"
#include<fstream>
#include<iostream>
using namespace std;
 
list<Staff> CData::staffList; //靜態(tài)成員的初始化
 
//實(shí)現(xiàn)類(lèi)的靜態(tài)函數(shù)
void CData::userInit()
{
	/*
	1.從文件中讀取數(shù)據(jù) 存入list
	2.如果沒(méi)有數(shù)據(jù) 先預(yù)定義一些數(shù)據(jù)寫(xiě)入文件 存儲(chǔ)list3個(gè)
	3.如果有數(shù)據(jù) 讀取出來(lái)存入list
	*/
	fstream fs;//文件流對(duì)象  in從文件中讀出 out寫(xiě)入文件 app追加
	fs.open("user.txt",fstream::in | fstream::out |fstream::app);
	//目標(biāo)讀文件 文件指示器需要定在開(kāi)頭
	//如果沒(méi)有數(shù)據(jù) 定位到文件尾部 獲取文件大小
	fs.seekg(0, ios::end);
	//計(jì)算文件中的字節(jié)數(shù)
	int count = fs.tellg();
	//創(chuàng)建一個(gè)迭代器
	list<Staff>::iterator it;
	if(count<=0)
	{
		cout<<"沒(méi)有數(shù)據(jù),準(zhǔn)備數(shù)據(jù),寫(xiě)入文件"<<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寫(xiě)入 每個(gè)元素是對(duì)象.運(yùn)算符獲取
			//每個(gè)數(shù)據(jù)一行 用空格隔開(kāi)
			fs<<(*it).getId()<<" "<<(*it).getName()<<" "<<(*it).getPwd()<<" "<<(*it).getRole()<<endl;
		}
	}
}

結(jié)果:

二:讀文件操作

CData.cpp

#include"CData.h"
#include<fstream>
#include<iostream>
using namespace std;
 
list<Staff> CData::staffList; //靜態(tài)成員的初始化
 
//實(shí)現(xiàn)類(lèi)的靜態(tài)函數(shù)
void CData::userInit()
{
	/*
	1.從文件中讀取數(shù)據(jù) 存入list
	2.如果沒(méi)有數(shù)據(jù) 先預(yù)定義一些數(shù)據(jù)寫(xiě)入文件 存儲(chǔ)list3個(gè)
	3.如果有數(shù)據(jù) 讀取出來(lái)存入list
	*/
	fstream fs;//文件流對(duì)象  in從文件中讀出 out寫(xiě)入文件 app追加
	fs.open("user.txt",fstream::in | fstream::out |fstream::app);
	//目標(biāo)讀文件 文件指示器需要定在開(kāi)頭
	//如果沒(méi)有數(shù)據(jù) 定位到文件尾部  獲取文件大小
	fs.seekg(0, ios::end);
	//計(jì)算文件中的字節(jié)數(shù)
	int count = fs.tellg();
	//創(chuàng)建一個(gè)迭代器
	list<Staff>::iterator it;
	if(count<=0)
	{
		cout<<"沒(méi)有數(shù)據(jù),準(zhǔn)備數(shù)據(jù),寫(xiě)入文件"<<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
	{
		//目標(biāo)讀文件 文件指示器定位到開(kāi)頭
		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是讀到末尾
		{
			//沒(méi)有讀到最后 每一行都讀取
			fs.getline(buf,256);
			//sscanf讀到數(shù)據(jù) 使用空格進(jìn)行拆分
			sscanf(buf,"%d %s %s %d",&id,name,pwd,&role);
			//拆分出來(lái)的數(shù)據(jù) 放入鏈表中
			CData::staffList.push_back(Staff(id,name,pwd,role));		
		}
		for(it = CData::staffList.begin();it!=CData::staffList.end();it++)//驗(yàn)證是否讀對(duì)
		{
			cout<<(*it).getId()<<" "<<(*it).getName()<<" "<<(*it).getPwd()<<" "<<(*it).getRole()<<endl;		
		}	
	}	
}

結(jié)果:讀到的是文件中的正確信息

到此這篇關(guān)于C++文件的數(shù)據(jù)寫(xiě)入和文件的數(shù)據(jù)讀取的方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C++文件數(shù)據(jù)寫(xiě)入和讀取內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

  • 一文弄懂C語(yǔ)言EOF

    一文弄懂C語(yǔ)言EOF

    在 C語(yǔ)言中,EOF 是一個(gè)宏定義,EOF 常常用于文件的輸入輸出中,當(dāng)讀取到文件結(jié)束時(shí),會(huì)返回 EOF,本文就詳細(xì)的介紹一下具體使用方法,感興趣的可以一起來(lái)了解一下
    2023-05-05
  • C++的智能指針你真的了解嗎

    C++的智能指針你真的了解嗎

    這篇文章主要為大家詳細(xì)介紹了C++的智能指針,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • C/C++中二進(jìn)制文件&順序讀寫(xiě)詳解及其作用介紹

    C/C++中二進(jìn)制文件&順序讀寫(xiě)詳解及其作用介紹

    這篇文章主要介紹了C/C++中二進(jìn)制文件&順序讀寫(xiě)詳解及其作用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • C++11中多線程編程-std::async的深入講解

    C++11中多線程編程-std::async的深入講解

    這篇文章主要給大家介紹了關(guān)于C++11中多線程編程-std::async的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • C++實(shí)現(xiàn)酒店管理系統(tǒng)

    C++實(shí)現(xiàn)酒店管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)酒店管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 詳解C語(yǔ)言的預(yù)處理效果

    詳解C語(yǔ)言的預(yù)處理效果

    這篇文章主要為大家介紹了C語(yǔ)言的預(yù)處理效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • C#如何調(diào)用原生C++ COM對(duì)象詳解

    C#如何調(diào)用原生C++ COM對(duì)象詳解

    這篇文章主要給大家介紹了C#如何調(diào)用原生C++ COM對(duì)象,在C++中實(shí)現(xiàn)C#的接口。文中通過(guò)示例代碼介紹的很詳細(xì),相信對(duì)大家的理解和學(xué)習(xí)會(huì)有一定的參考借鑒價(jià)值,有需要的朋友們下面來(lái)一起看看吧。
    2016-12-12
  • 基于條件變量的消息隊(duì)列 說(shuō)明介紹

    基于條件變量的消息隊(duì)列 說(shuō)明介紹

    本篇文章小編為大家介紹,基于條件變量的消息隊(duì)列 說(shuō)明介紹。需要的朋友參考一下
    2013-04-04
  • Objective-C限制函數(shù)調(diào)用的頻率詳解

    Objective-C限制函數(shù)調(diào)用的頻率詳解

    這篇文章主要給大家介紹了關(guān)于Objective-C限制函數(shù)調(diào)用的頻率的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • 最新評(píng)論