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

时间:2014-12-17 01:59:26

标签: c++

我需要在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 个答案:

答案 0 :(得分:1)

即使你发布的代码,也有很多工作要做:

  1. 在处理任何输入之前,您需要检查输入是否成功。否则,你可能会,例如,最终会在文件中插入空字符串,可能会破坏其内容。
  2. 在添加新内容时,您几乎肯定需要在目标文件中添加换行符。
  3. 也就是说,您的输入可能如下所示:

    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. 我可以输入代码,但我不需要练习阅读/写文件。