C ++解析文件的最快方法

时间:2012-12-13 20:38:46

标签: c++ string boost char

我有一个我打开过的文件:

ifstream ifile(FilePath)

该文件包含10行数据,每行包含一个均匀递增的逗号分隔值(如金字塔)。所以第一行有1个值,第二行有2个值,依旧......

我想在一个函数内执行以下操作(同时遍历文件char数组一次):

- 每次遇到换行符时,我都可以递增一个按值传入的参数(当函数退出时,我有文件中的行数)。

- 我还希望将文件的每一行存储在一个数组中。将换行符之间的所有字符“粘合”在一起的最佳方法是什么?

我更喜欢使用静态分配的数组,但问题是我只知道执行第1步后数组的大小(计算有多少新行字符)。是否可以更快地执行双解析(一个解析计算多少行,然后使用该值来分配静态数组)或单个解析,但插入动态数组?

对此的强调是编写快速代码(因此不是OO友好不是一个问题)

道歉,如果我问了很多,希望你能看到我已经考虑过这个。

编辑,示例文件:

  

     

B,C

     

d,E,F,G,H

     

J,K,L,M,N,O,P

从这个文件中我想实现:

  • 知道文件中有4行
  • 包含每一行的非动态数组
  • 第二行中的元素数量

1 个答案:

答案 0 :(得分:0)

现有帖子中有很多关于如何做到这一点的例子。

如果你想使用ifstream读取文件一次,你可以这样做:

std::ifstream in("myfile");

std::stringstream buffer;
buffer << in.rdbuf();

std::string contents(buffer.str());