2009-07-02 122 views
6

在C++中讀取製表符分隔文件並將每行存儲爲記錄的最佳方式是什麼?我一直在尋找一個開源的庫來幫助解決這個問題,但一直沒有成功,所以看起來我必須自己寫。在C++中讀取分隔文件

+1

我很驚訝,當我搜索這個時,我無法簡單地從某個地方摘取一些代碼來做這麼簡單的事情。無論如何,我爲我的解決方案寫了一個博客(基於Stack Exchange上的其他答案)[C++小知識](http://goo.gl/y0bOVv) – Wybird666 2014-07-24 15:45:41

回答

17
typedef vector<vector<string> > Rows; 
Rows rows; 
ifstream input("filename.csv"); 
char const row_delim = '\n'; 
char const field_delim = '\t'; 
for (string row; getline(input, row, row_delim);) { 
    rows.push_back(Rows::value_type()); 
    istringstream ss(row); 
    for (string field; getline(ss, field, field_delim);) { 
    rows.back().push_back(field); 
    } 
} 

這會讓你開始。它沒有做任何檢查,每行有相同數量的字段,允許轉義field_delim等。

+0

此代碼在Visual Studio中完成了機器人工作。 錯誤是錯誤「C4430:缺少類型說明符 - int假定」。 我已經包含string.h – tumchaaditya 2012-04-26 05:04:23

5

使用iostreams沒有問題 - 您可以用getline將每一行讀入字符串,然後使用該字符串的stringstream來遍歷字段。