2009-11-11 39 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

相關問題