gpt4 book ai didi

C++如何对齐文件的每一行?

转载 作者:行者123 更新时间:2023-11-30 05:06:27 25 4
gpt4 key购买 nike

我想使用 openMP 从磁盘读取一个包含很多行的大文件。一种方法似乎是使用 seekg() 函数。但令人头疼的是seekg()只支持将文件索引移动到特定字节。

如果每行的大小完全相同,这就可以正常工作。但是我不知道如果每行的大小完全不同怎么办。那你能给我一些提示吗?

最佳答案

一种可能:

  • 根据字节将文件分成大小相等的 block ,每个并行任务一个,不考虑行尾。
  • 让每个任务查找其 block 的开头,然后读取并忽略 字符,直到找到行结尾,以便它可以在行的开头开始处理文件。 (作为一种特殊情况,从偏移量 0 开始的任务不应执行此操作,因为它已经在一行的开头。)
  • 当任务到达其 block 的末尾(即下一个 block 开始的字节偏移量)时,继续读取该点到当前行的末尾。 (作为一种特殊情况,最后一个 block 的末尾也是文件的末尾,因此在该点之后没有任何内容可读。)

基本上,您最初是根据字节偏移量选择边界,然后将它们向前移动以与行尾重合。每个任务都会跳过其 block 开头的一些字符,而这些字符将由读取前一个 block 末尾的另一个任务处理。

(我相信这就是 Hadoop 默认情况下拆分基于文本的输入文件的方式,顺便说一句。)

关于C++如何对齐文件的每一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47899069/

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