如何使用文本文件作为本地数据库
How to use text file as local database
我有一个data_base.txt文件,其下一个结构是:
1|client_name|id_client|account_client|balance|status
2|client_name|id_client|account_client|balance|status
示例:
1|John Doe|08913835P|053-323-192|120.00|active
现在我想让接下来的四个函数与这个文件一起工作:
此功能将向.txt文件添加一个新客户端
int newClient(string client_name, string id_client)
{
.....
}
此功能将通过检查id_client
来检查客户端是否存在
int checkClient(string id_client)
{
// return true; (if client with that ID exists)
// return false; (if client not exists)
}
此函数将获得一个特定值:
int getData(string field, string id_client)
{
// Example: if string field == 'balance' and id_client == '08913835P' then return '120.00'
// This example is done using above example data structure.
}
此功能将修改数据
int modifyData(string field, string data)
{
// This should work like the previous function but this function will edit specific values.
}
仅此而已,我已经在谷歌上搜索了几个小时,但我还不知道该怎么做。
如果做得不好,这是有问题的,而且效率非常低。
简单的答案是,如果每一行的长度都可以改变,那么你需要完全重写整个文件来更新数据。例如,如果您的程序将整个文件加载到内存中,然后在修改后将其保存,这将起作用。
要更新磁盘上的文件,必须强制执行某种类型的规则,例如每行的长度必须相同。这意味着为所有字段设置一个最大长度,并用空格或其他字符填充这些字段。
使用后一种技术,应该可以构造一行新的数据(带填充),知道该行在文件中的位置(行号-每行长度的1倍),跳到该位置,然后写入该行。
获取数据会更简单但相似。只需确定线条的偏移量并读取即可(您将知道线条的长度)。在呈现给用户之前,剥去任何填充物。
修改一行类似于获取数据和写入数据的组合。你只需要更新两者之间的数据。
相关文章:
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 如何使用SQLite将数据库中的值导出为C / C++中的字符串或字符?
- 在装有 CLion 的 Mac 上使用 C++ 连接到 MySQL 数据库时出现问题
- 使用 Qt5 SQL 进行异步数据库访问的策略
- 如何使用 c++ 在 sqlite3 中打开受密码保护的数据库?
- 使用 SQlite 在 QT5 上关闭和打开数据库时出错
- 如何使用C ++将SQLite数据库中的所有表从一个数据库复制到另一个数据库
- 【MacOSX 10.15.1】使用 odb 生成数据库,致命错误:wchar.h:没有这样的文件或目录 #include < wchar.h>
- C++ODB数据库映射程序:无法在关系中使用std::weak_ptr
- 如何使用 QT 和 C++ 侦听 mysql 数据库中的触发事件?
- 如何使用Visual C++(非C++/CLI)处理.mdb数据库
- 使用 cmake 在窗口上编译 c++ 数据库时出错
- 我不能使用 mysql 数据库连接同时使用插入和选择.C++
- 为什么当我使用 soci 连接到 postgresql 时,我没有足够的数据库权限?
- 我们可以从 TXT 文件中读取数据并使用 C 和 C++ 将其保存到 SQL 数据库吗?
- QT QML:使用.qrc文件将SQLite数据库部署到Android不起作用
- 在 qt 中使用 QStandardItemModel 显示 QSQLite 数据库
- C :如何在iOS中已经存在的MFC应用程序中的加密SQLITE数据库重复使用
- 使用SQLite在附加数据库中使用触发器的效率
- 管理sqlite3数据库不使用官方sqlite3库