2009-11-11 50 views
3

好吧,我试图找出哪种方式会更快地读取我正在处理的文本文件。该文件的内容是这样的最快速的方法是在每一行中使用任意数量的字符逐行读取文件。

 
1982 3923 3542 4343 
2344 3453 2 
334 423423 32432 23423 

,他们基本上INT数字只是一个任意号码,我需要按行读入行。使用getline或插入(>>)运算符会更好吗?我个人认为使用插入操作符实现起来会容易得多,但我不知道如何编写程序,以便它读取同一行中的所有int数字,直到达到最终。我想设置它像下面的:

ifstream input; 
input.open("someFile.txt"); 
if (input) { 
    char* ch; 
    while (ch != '\n\) 
     getline(input, buffer, ' ') 

唯一的问题是,我必须做转换成int,然后放在一个阵列中的每个诠释。我期望的最终目标是生成一个二维数组,其中每行int都是int数组。任何有关最佳实施的建议都会受到赞赏!

回答

5

我会保持真正简单:

ifstream in(...); 
string line; 
while (getline(in, line)) { 
    istringstream line_in(line); 
    while (line_in) { 
     int val = 0; 
     if (line_in >> val) { 
      // Do something with val 
     } 
    } 
    // eol 
} 
2
  1. 你不得不标杆得到一个正确的答案。
  2. 这两个函数的速度是实现定义的。您可能在不同的编译器上得到不同的结果。
  3. 最快的方法可能会使用定制的有限状态机。但是那些大概跟你一样难以理解。

先生成正确的代码。如果您需要稍后再调整它。

+0

+1点1.测量两次,切割一次! – 2009-11-11 13:17:32

相关问题