这个项目非常简单,没写基于文件的数据库是因为在C++中处理字符串真的好坑啊
显示出来是homo的字符串可能有"homo","homo\n","homo\r\n","homo\b"等等形式……
写了两天放弃了
源码:
[C++] 纯文本查看 复制代码 #include <map>
#include <iostream>
#include <string>
class MemKV {
public:
MemKV() : kvData_({}) {}
~MemKV() {}
void Set(std::string key, std::string value);
std::string Get(std::string key);
void Remove(std::string key);
void Display();
private:
std::map<std::string, std::string> kvData_;
};
/**
* 设置数据
*/
void MemKV::Set(std::string key, std::string value)
{
kvData_[key] = value;
}
/**
* 获取key处的value
*/
std::string MemKV::Get(std::string key)
{
// 检测键值是否在map中
if (kvData_.find(key) != kvData_.end()) {
return kvData_[key];
}
std::cerr << "[Error] The key " << key << " is not in the map!" << std::endl;
return "";
}
/**
* 移除某个键值
*/
void MemKV::Remove(std::string key)
{
if (kvData_.find(key) != kvData_.end()) {
kvData_.erase(key);
return;
}
std::cerr << "[Error] The key " << key << " is not in the map!" << std::endl;
}
/**
* 回显所有数据
*/
void MemKV::Display()
{
for (auto data : kvData_) {
std::cout << "Key:" << data.first << ";Value:" << data.second << std::endl;
}
}
int main()
{
MemKV kv;
kv.Set("site", "home.x64bbs.cn");
kv.Set("admin", "huang1111");
kv.Set("users", "1697");
kv.Set("homo", "114514");
std::cout << kv.Get("site") << " " << kv.Get("admin") << " " << kv.Get("users") << " " << kv.Get("homo") << std::endl;
kv.Remove("homo");
kv.Display();
}
|