前言
一个简单的实现简便 "map集合" 数据存储本地。
适合不会SQL但又想实现数据存储本地的同学。
操作使用都非常简单。
文件只做了简单的加密处理,如果需要复杂加密的同学可以修改加密函数。
项目结构
1.创建头文件——CAB.h
//
// Created by xw on 2024/2/7.
//#include <iostream>
#include <cstdio>
#include <string>
#include <fstream>
using namespace std;
#ifndef UNTITLED_FUN_H
#define UNTITLED_FUN_H//数据库 结构体
struct DataBase
{//文件写入void write(string road,map<string,string>maps){//创建文件输出流对象ofstream ofs;//打开文件,若文件不存在则创建文件ofs.open(road);//将maps转换成字符串string s = transferStr(maps);//加密处理//写入字符串到文件ofs<<s;//关闭文件ofs.close();//cout<<"---文件写入完毕---"<<endl;}//将maps转换成字符串string transferStr(map<string,string> maps){string s="";map<string, string>::iterator iter;for(iter = maps.begin(); iter != maps.end(); iter++){s= s + iter->first + "*" + iter->second + "\n";}return s;}//读取文件map<string,string> read(string road){//定义集合map<string,string> maps;//定义文件流ifstream ifs;//打开文件ifs.open(road);//定义字符串string buffer;//循环得到结果while (getline(ifs,buffer)){//定义key valuestring key;string value;//获取内容长度int len = buffer.length();//处理bufferbuffer=buffer.substr(0,len);//测试输出字符串//cout<<buffer<<endl;for (int i = 0; i < len; ++i) {if (buffer[i]=='*'){key = buffer.substr(0,i);value = buffer.substr(i+1,len);//cout<<key<<" "<<value<<endl;maps[key]=value;}}}//关闭文件ifs.close();//cout<<"---文件读取完毕---"<<endl;return maps;}//加密string encrypt(string s){//字符串长度int length = s.length();//string newS = "";//加密for (int i = 0; i < length; i++) {s[i] = char (s[i] + 1);//cout<<s[i];newS = newS + s[i];}cout<<newS<<endl;//返回加密字符串return newS;}//解密string decrypt(string s){//字符串长度int length = s.length();//string newS = "";//解密for (int i = 0; i < length; i++) {s[i] = char (s[i] - 1);//cout<<s[i];newS = newS + s[i];}cout<<newS<<endl;//返回解密字符串return newS;}};#endif //UNTITLED_FUN_H
2.测试使用代码——main.cpp
#include <map>
#include "CAB.h"
using namespace std;int main() {//定义结构体对象DataBase dataBase;//定义map集合map<string ,string >maps;//向maps中添加元素//key值和value值只能是字符串maps["zhangsan"]="zhangsan";maps["lisi"]="lisi";maps["wangwu"]="wangwu";//向数据库中写入maps集合dataBase.write("test.txt",maps);//从数据库中拿数据map<string ,string >tempMaps;tempMaps = dataBase.read("test.txt");cout<<"打印数据tempMaps:"<<endl;//遍历打印map<string, string>::iterator iter;for(iter = tempMaps.begin(); iter != tempMaps.end(); iter++){cout<<iter->first<<" "<<iter->second<<endl;}/*dataBase.encrypt("hello world");dataBase.decrypt("ifmmp!xpsme");*/return 0;
}
3.效果展示
控制台输出
数据成功保存到文件中