我有一个带有下一个结构的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.
}
就是这样,我一直在谷歌搜索几个小时,我还想不出怎么做。
答案 0 :(得分:0)
如果做得不对,这是有问题的,而且非常低效。
简短的回答是,如果每行的长度可以改变,那么您需要完全重写整个文件以更新数据。例如,如果您的程序将整个文件加载到内存中,然后在修改后将其保存,那么这将起作用。
要更新磁盘上的文件,您必须强加某种类型的规则,例如每行必须具有相同的长度。这意味着为所有字段设置最大长度,并用空格或其他字符填充这些字段。
使用后一种技术,应该可以构造一个新的数据行(带填充),知道文件中该行的位置(行号 - 每行长度的1倍),跳转到该位置然后写下这一行。
获取数据会更简单但相似。只需确定线的偏移量并读取它(你知道线的长度)。在呈现给用户之前剥去任何填充。
修改一行与获取数据和写入数据的组合类似。您只需更新两者之间的数据。