行号二分查找



我有一个很长的文件,可以假设(如果有帮助的话)其中的每一行都具有相同的格式。我想读取文件的某一行。在c++中,是否有可能通过二进制搜索将指针移动到该行,而不是从文件的顶部开始,逐行读取和计数行?也就是说,是否有可能访问一些line_of_file指针并通过二进制搜索移动它?如果不能在c++中,这个任务在汇编语言或其他语言中是可能的吗?

不能有效地使用二进制搜索来查找文本文件中的行号,因为文本文件不是按行号索引的。换句话说,没有办法计算出文件中给定偏移量的行号,只能从开头开始,读取每个字符,并计算新行字符的数量。

只有一个例外,在这种情况下,二分查找也帮不了你。如果文件中的每一行都是完全相同的长度,那么您可以通过将该长度乘以行号(使用0作为第一行的编号)来找到特定行的偏移量。不要忘记在行长度中包含换行符。您可以使用istream::seekgostream::seekp分别定位下一个输入或输出操作。(您需要使用双参数版本。其他一些警告适用于将换行字符转换为多字符序列的平台;我在看着你,窗户。

相关内容

  • 没有找到相关文章

最新更新