本人新手,有什么不足请体谅
dict.h 头文件内容:
#pragma once
#include <iostream>
#include <fstream>
using namespace std;
#ifndef DICT_LSY_H
#define DICT_LSY_H
struct dict //字典(类似于Python中的)
{
char *index[256];
char *value[256];
int index_num = 0; //字典中值的存储个数
void set(char *rindex, char *rvalue) //赋值函数
{
for (int i = 0; i < index_num; i++) //更改字典中的值
{
if (strcmp(rindex, index[i]) == 0)
{
value[i] = rvalue;
return;
}
}
index[index_num] = rindex; //给字典添加新值
value[index_num] = rvalue;
index_num++;
}
bool including(char *cindex) //判断字典中是否已经存在这个成员
{
bool result = false;
for (int i = 0; i < index_num; i++)
{
if (strcmp(cindex, index[i]) == 0)
{
result = true;
break;
}
}
return result;
}
char* Value(char *vindex) //获取字典的值
{
for (int i = 0; i < index_num; i++)
{
if (strcmp(vindex, index[i]) == false)
return value[i];
}
return "[NULL]";
}
void savejson(char* filename) //以json格式保存字典
{
ofstream json;
json.open(filename);
if (!json.fail())
{
json << "{" << "\n";
for (int i = 0; i < (index_num - 1); i++)
json << "\t\"" << index[i] << "\":\"" << value[i] << "\",\n";
json << "\t\"" << index[index_num - 1] << "\":\"" << value[index_num - 1] << "\"\n";
json << "}" << "\n";
json.close();
}
}
int getindexnum(char *sindex) //获取某值的索引数字
{
int i = 0;
for (i; i < index_num; i++)
{
if (index[i] == sindex)
break;
}
return i;
}
char* stringify() //转换为json格式字符串
{
char jsonstr[32768] = { "{" };
for (int i = 0; i < index_num; i++)
{
strcat(jsonstr, "\"");
strcat(jsonstr, index[i]);
strcat(jsonstr, "\":\"");
strcat(jsonstr, value[i]);
strcat(jsonstr, "\"");
if (i != index_num - 1)
strcat(jsonstr, ",");
}
strcat(jsonstr, "}");
strcpy(jsonstr, replacechar(jsonstr, '\\', "\\\\"));
return jsonstr;
}
void del(char* dindex) //删除字典中某一值
{
int j = getindexnum(dindex);
if (j == index_num)
return;
for (int i = j; i < index_num - 1; i++)
{
index[i] = index[i + 1];
value[i] = value[i + 1];
}
index[index_num] = "";
value[index_num] = "";
index_num--;
}
void reset() //重置字典
{
for (int i = 0; i < index_num; i++)
{
index[i] = "";
value[i] = "";
}
index_num = 0;
}
int count(char *cvalue) //计数同一数值在此字典中出现的数
{
int c = 0;
for (int i = 0; i < index_num; i++)
{
if (strcmp(value[i], cvalue) == 0)
c++;
}
return c;
}
};
#endif
涉及到的其他函数:
char* replacechar(char str[32768], char origin_ch, char replaced_str[64]) //将特定字符替换成特定字符串
{
char result[32768] = { "" };
for (int i = 0; true; i++)
{
if (str[i] == origin_ch)
strcat(result, replaced_str);
else if (str[i] == '\0')
break;
else
strcat(result, chstr(str[i]));
}
return result;
}
本人初中生,正在学习C++,有什么不足请提出
364

被折叠的 条评论
为什么被折叠?



