c++ - 在 C++ 中拆分 ifstream

标签 c++ ifstream

我是 C++ 的新手,可能有一个愚蠢的问题。我有一个 ifstream,我想将其大致分成两半。

有问题的文件是一个排序的 csv,我希望搜索文件每一行的第一个值。

最终文件会非常大,所以我尽量避免读取文件的每一行。

例如

如果文件包含 7 行,我想将 ifstream 拆分为 1 个包含前 3 行的流和 1 个包含最后 4 行的流。

最佳答案

首先,使用 this question 的答案以确定文件的大小。然后将该数字除以二。逐行读取输入,写入第一个输出流;每次调用后检查 file.tellg()。过了中途点后,将输出切换到第二个文件。

这不会在文件之间平均拆分字符串,但这些字符串中的字符总数应该足够接近,并且不会在字符串中间拆分您的文件.

关于c++ - 在 C++ 中拆分 ifstream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8602923/

相关文章:

c++ - 在 C/C++ 中返回 0 作为默认值的基本原理

c++ - 分段初筛

c++ - 尝试从文件中读取对象并正确获取一些记录后,我的程序检测到eof,剩下许多记录

c++ - 不计算程序中的最低和最高成绩。 (c++) (fstream)

c++ - Argv[] 未注册参数

c++ - 构建 CUDA/C++ 代码时链接器错误

c++ - 我如何使用 goto 来执行文件任务而不是使用函数?

c++ - 文件输入和编译错误

c++ - while(fin>>a) 或 while(fin.eof()) 将不起作用。在第一种情况下,fin 流变量一直将文件中的最后一个字符作为输入

C++ for 循环(c++11 方式和旧版本方式)