我正在使用 C++、ifstream
和文本文件。我正在寻找每行结尾的位置,因为我需要从行尾读取 n
个字符。
目前,我正在读取每个字节并测试它是否对应于 Unix 换行符 (LF)。
不幸的是,输入通常是长文本,我的方法并不快。
有没有更快的方法?
最佳答案
如果您正在寻找原始速度,我会内存映射文件并使用类似 strchr
的东西来查找换行符;
p = strchr(line_start, '\n');
那么只要 p
不是 NULL
或内存区域中的第一个字符,您就可以使用 p[-1]
读取换行符前的字符。
注意如果文件可能包含'\0'
字符,那么您应该使用memchr
。事实上,这可能是可取的,因为它允许您指定缓冲区(内存区域)的大小。
关于c++ - 查找行尾位置的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9620681/