以下是我遇到问题的代码,我有一个.txt文件,其中包含使用以下格式的用户及其密码列表:user;password
。
我需要在文件中搜索用户,然后删除包含该用户的行。
void deleteauser()
{
string user;
cout<<"Which user do you wish to delete?";
cin>>user;
string line;
string delimiter=";";
string token,token1;
ifstream infile;
infile.open("users.txt",ios::in);
while (getline(infile,line,'\n'))
{
token = line.substr(0, line.find(delimiter));
token1=line.substr(token.length(), line.find('\n'));
if(token==user)
{
//here i need to delete the line of the user that has been found
}
}
infile.close();
}
答案 0 :(得分:3)
逐行读取输入文件,写入临时文件。当您找到不想要的行时,就不要将它们写入临时文件。完成后,将临时文件重命名为真实文件。
答案 1 :(得分:1)
要编辑文件,您有两个选项:
上半部分已完成 - 只需将您读到的内容写出来并删除/重命名,使其成为原始文件。
对于第二个选项,如果使用iofstream,则可以在此时写入输入文件(注意缓冲问题)。更好的选择是在覆盖文件之前使用seekp或seekg到达正确的位置。