如何在C++的排序文件中插入数据

How to insert data in sorted file in C++?

本文关键字:文件 插入 数据 排序 C++      更新时间:2023-10-16

我需要在C++的文件中插入数据。我需要插入名字和姓氏。文件中的所有行首先按姓氏排序,然后按名字排序。所以我的问题是当我插入新行时,如何在正确的位置插入并且所有记录仍然被排序?

使用此代码,我只是将数据附加到文件中,但不知道如何排序`

string fName,lName;
cout<<"Insert Last Name: "<<endl;
    cin>>lName;
cout<<"Insert First Name: "<<endl;
cin>>fName;
ofstream myfile("sort.dat",ios::app);
myfile<<fName<<" "<<lName;`

即使您发布的代码,也有多种工作:

  1. 在处理任何输入之前,您需要检查输入是否成功。否则,例如,您可能会将空字符串插入到文件中,从而可能损坏其内容。
  2. 在附加新内容时,几乎可以肯定需要在目标文件中放置换行符。

例如,您的输入可能如下所示:

std::string fName, lName;
if (std::cout << "Insert last name: "
    && std::cin >> lName
    && std::cout << "Insert first Name: "
    && std::cin >> fName) {
    // now do something with the read values
}
else {
    // deal with the error
}

下一步是"插入到文件中":这不起作用。对文件进行排序必然会更少!相反,您将文件复制到新目标并在适当的位置插入记录的内容

  1. 读取现有文件的每一行。如果记录小于新记录,请写入该记录并转到第 1 行。
  2. 写入新记录。
  3. 写入已读记录。
  4. 复制原始文件的其余内容。
  5. 关闭这两个文件。
  6. 删除原始文件
  7. 并将新文件重命名为原始文件的名称。

我可以输入代码,但我真的不需要阅读/写入文件的练习。