使用关键字解析 C++ 中的文件
parsing file in c++ with keyword
我正在尝试想一种有效的方法来读取数千行的文件。每行都以一个关键字开头。我想阅读关键字,如果它满足某些条件(例如 atoi(关键字)>5),那么我阅读整行,否则转到下一行。
有没有有效的方法? 我不想阅读和拆分每一行,除非满足关键字条件(每一行都很大)。我只能访问标准库功能。
你基本上别无选择,只能阅读整行 - 一行延伸到下一个换行符,所以如果不阅读字符,你就无法识别一行结束和下一行开始的位置。
如果您具有脱机预处理的某些功能,则可以对文件进行预索引以查找每行的开头,以便可以读取一行的开头,如果不符合条件,请直接查找下一行的开头。这会增加整体带宽使用量,但在关键时刻可以提高速度。
根据你所说的一条线是巨大的,它可能没有多大(如果有的话)真正的好处。如果"巨大"意味着几兆字节,它可能会有很大帮助。如果"巨大"意味着数百到几千字节,那么它很容易比读取所有数据慢。
最快的方法是阅读每个字符,寻找一行的末尾,当你找到一个时,然后开始你的关键字逻辑。没有一种方法可以简单地跳到文件中的下一行而不读取每个字符。
您可以通过使用 mmap 打开文件,然后使用 memchr 搜索行尾来最大化搜索新行的速度。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 读取文件的最后一行并输入到链接列表时出错
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 如何将内容数组写入文本文件?
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到