gpt4 book ai didi

C++在特定行号的文件中插入一行

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:26:05 24 4
gpt4 key购买 nike

我希望能够从未排序的源文本文件(每行一条记录)中读取,并通过指定应插入的行号将行/记录插入到目标文本文件中。

将行/记录插入目标文件的位置将通过将传入文件的传入行与目标文件中的已排序列表进行比较来确定。 (目标文件将以空文件开始,随着程序遍历传入的文件行,数据将被排序并一次插入一行。)

传入文件示例:

1 10/01/2008 line1data
2 11/01/2008 line2data
3 10/15/2008 line3data

所需的目标文件示例:

2 11/01/2008 line2data
3 10/15/2008 line3data
1 10/01/2008 line1data

我可以通过链接列表或类似的方式在内存中执行排序来做到这一点,但我想允许它扩展到非常大的文件。 (我很高兴尝试解决这个问题,因为我是 C++ 新手 :)。)

其中一种方法可能是使用 fstream 打开 2 个文件流(1 进 1 出,或仅 1 进/出流),但随后我遇到了困难很难找到和搜索文件位置,因为它似乎取决于文件开头的绝对位置而不是行号:)。

我确信以前已经解决过类似的问题,如果能提供有关如何以良好做法进行处理的建议,我将不胜感激。

我正在使用 Visual Studio 2008 Pro C++,而且我只是在学习 C++。

最佳答案

基本问题是在普通操作系统下,文件只是字节流。在文件系统级别没有行的概念。这些语义必须作为附加层添加到操作系统提供的设施之上。虽然我从未使用过它,但我相信 VMS 有一个面向记录的文件系统,可以使您想做的事情更容易。但是在 Linux 或 Windows 下,您不能在不重写文件其余部分的情况下插入文件的中间。它类似于内存:在最高层,它只是一个字节序列,如果你想要更复杂的东西,比如链表,它必须加在最上面。

关于C++在特定行号的文件中插入一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/305817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com