" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一:沒有數(shù)據(jù),準備數(shù)據(jù),寫入文件

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"
 
//專門用來做數(shù)據(jù)準備  文件存儲在磁盤中 程序運行在內存中
//緩存區(qū) 鏈表 向量    適合什么樣的容器
class CData
{
public:
	//靜態(tà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)成員的初始化
 
//實現(xiàn)類的靜態(tài)函數(shù)
void CData::userInit()
{
	/*
	1.從文件中讀取數(shù)據(jù) 存入list
	2.如果沒有數(shù)據(jù) 先預定義一些數(shù)據(jù)寫入文件 存儲list3個
	3.如果有數(shù)據(jù) 讀取出來存入list
	*/
	fstream fs;//文件流對象  in從文件中讀出 out寫入文件 app追加
	fs.open("user.txt",fstream::in | fstream::out |fstream::app);
	//目標讀文件 文件指示器需要定在開頭
	//如果沒有數(shù)據(jù) 定位到文件尾部 獲取文件大小
	fs.seekg(0, ios::end);
	//計算文件中的字節(jié)數(shù)
	int count = fs.tellg();
	//創(chuàng)建一個迭代器
	list<Staff>::iterator it;
	if(count<=0)
	{
		cout<<"沒有數(shù)據(jù),準備數(shù)據(jù),寫入文件"<<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寫入 每個元素是對象.運算符獲取
			//每個數(shù)據(jù)一行 用空格隔開
			fs<<(*it).getId()<<" "<<(*it).getName()<<" "<<(*it).getPwd()<<" "<<(*it).getRole()<<endl;
		}
	}
}

結果:

二:讀文件操作

CData.cpp

#include"CData.h"
#include<fstream>
#include<iostream>
using namespace std;
 
list<Staff> CData::staffList; //靜態(tài)成員的初始化
 
//實現(xiàn)類的靜態(tài)函數(shù)
void CData::userInit()
{
	/*
	1.從文件中讀取數(shù)據(jù) 存入list
	2.如果沒有數(shù)據(jù) 先預定義一些數(shù)據(jù)寫入文件 存儲list3個
	3.如果有數(shù)據(jù) 讀取出來存入list
	*/
	fstream fs;//文件流對象  in從文件中讀出 out寫入文件 app追加
	fs.open("user.txt",fstream::in | fstream::out |fstream::app);
	//目標讀文件 文件指示器需要定在開頭
	//如果沒有數(shù)據(jù) 定位到文件尾部  獲取文件大小
	fs.seekg(0, ios::end);
	//計算文件中的字節(jié)數(shù)
	int count = fs.tellg();
	//創(chuàng)建一個迭代器
	list<Staff>::iterator it;
	if(count<=0)
	{
		cout<<"沒有數(shù)據(jù),準備數(shù)據(jù),寫入文件"<<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讀到數(shù)據(jù) 使用空格進行拆分
			sscanf(buf,"%d %s %s %d",&id,name,pwd,&role);
			//拆分出來的數(shù)據(jù) 放入鏈表中
			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++文件的數(shù)據(jù)寫入和文件的數(shù)據(jù)讀取的方法實現(xiàn)的文章就介紹到這了,更多相關C++文件數(shù)據(jù)寫入和讀取內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言實現(xiàn)24點問題詳解

    C語言實現(xiàn)24點問題詳解

    24點問題就是在屏幕上輸入1?10范圍內的4個整數(shù)(可以有重復),對它們進行加、減、乘、除四則運算后(可以任意的加括號限定計算的優(yōu)先級),尋找計算結果等于24的表達式。本文將通過C語言實現(xiàn)24點問題的求解,需要的可以參考一下
    2021-12-12
  • 深入解析C++編程中類的封裝特性

    深入解析C++編程中類的封裝特性

    這篇文章主要介紹了深入解析C++編程中類的封裝特性,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • C++11 shared_ptr 與 make_shared源碼剖析詳解

    C++11 shared_ptr 與 make_shared源碼剖析詳解

    這篇文章主要介紹了C++11 shared_ptr 與 make_shared的源碼剖析,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • c語言中如何修改文件中間的幾個字節(jié)

    c語言中如何修改文件中間的幾個字節(jié)

    工作中碰到一個問題,如何只修改文件中間的幾個字節(jié),而其他的內容不變。這個問題看似簡單,但是很多人估計都不知道怎么做。我開始seek到文件的特定的位置,然后寫文件,但是使用的文件打開模式不對,文件不是被清空,就是被截斷,達不到效果
    2020-10-10
  • 哈希表實驗C語言版實現(xiàn)

    哈希表實驗C語言版實現(xiàn)

    以下是對哈希表實驗用C語言實現(xiàn)的代碼進行了詳細的分析介紹,需要的朋友可以參考下
    2013-07-07
  • C語言使用sizeof和strlen計算數(shù)組和指針大小

    C語言使用sizeof和strlen計算數(shù)組和指針大小

    sizeof()一般是用來求取?變量?或者?類型?所占內存空間的大小,strlen()是一個庫函數(shù)是專門用來計算?字符串?長度的,下面我們就來看看C語言如何使用sizeof和strlen計算數(shù)組和指針大小吧
    2023-11-11
  • 基于matlab對比度和結構提取的多模態(tài)解剖圖像融合實現(xiàn)

    基于matlab對比度和結構提取的多模態(tài)解剖圖像融合實現(xiàn)

    這篇文章主要介紹了多模態(tài)醫(yī)學圖像配準與融合的概念、方法及意義,最后簡單介紹了小波變換分析方法。感興趣的小伙伴可以跟隨小編一起學習一下
    2021-11-11
  • C語言五子棋小游戲實現(xiàn)代碼

    C語言五子棋小游戲實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了C語言五子棋小游戲實現(xiàn)代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • opencv利用矩形框選中某一區(qū)域并保存為新圖片

    opencv利用矩形框選中某一區(qū)域并保存為新圖片

    這篇文章主要為大家詳細介紹了opencv利用矩形框選中某一區(qū)域并保存為新圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • opencv3/C++視頻中疊加透明圖片的實現(xiàn)

    opencv3/C++視頻中疊加透明圖片的實現(xiàn)

    今天小編就為大家分享一篇opencv3/C++視頻中疊加透明圖片的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12

最新評論

于田县| 钟山县| 隆安县| 无锡市| 西畴县| 进贤县| 特克斯县| 灵山县| 监利县| 遵义县| 旬阳县| 潮州市| 湘乡市| 阿拉善右旗| 广丰县| 金堂县| 万盛区| 远安县| 海阳市| 元江| 饶河县| 涡阳县| 牙克石市| 凤城市| 大城县| 双江| 富蕴县| 贺兰县| 和硕县| 江津市| 迁安市| 安泽县| 四川省| 鹰潭市| 江城| 原阳县| 鄂尔多斯市| 萍乡市| 永胜县| 芜湖县| 麦盖提县|