2011-03-08 101 views
0

我在讀取CSV文件時遇到了一些麻煩。我有多個類型的數據,所以我不知道如何得到這個工作:C++讀取CSV文件

string, string, bool, bool, int

我不能簡單地使用>>在數據讀取,因爲deliminator不是空白。 scanf不起作用,因爲它需要人工輸入,而不是文件輸入,getline只能讀取字符串,並且由於某些原因還包括\n字符。

如何正確讀取我的csv?

+2

可能的重複:http://stackoverflow.com/questions/1120140/csv-parser-in-c – 2011-03-08 19:48:28

+0

編碼的字符串是我所嘗試過的。麻煩的一點是,我不知道如何在我的程序 – askingforhelp 2011-03-08 19:48:40

回答

5

你可以使用getline。有一個重載的地方,第三個參數可以是分隔符的char。只是把它全部放在一個循環中

+0

中將值分解到它們各自的變量中,我確實使用了'getline(filestream,str,',')'。然而,它也讀到下一行(因爲沒有關閉逗號),所以所有的值都像瘋了似的錯誤 – askingforhelp 2011-03-08 19:55:41

+0

當你讀取int時,使用'\ n'作爲分隔符。閱讀全部5次迭代 – Marlon 2011-03-08 19:56:45

+0

很酷謝謝!我不相信我沒有想到這一點。最後一個問題:while循環的終止條件是什麼? 'file.eof()'出現錯誤 – askingforhelp 2011-03-08 19:59:09

2

另一種選擇(通常不推薦用於C++)是fscanf。你說得對,scanf對你沒有好處,但fscanf是其基於文件的等效物。

另一個通常用於C語言的規範解決方案,但在C++中不太推薦的方法是繼續使用getline,然後使用strtok或簡單的解析器來解析每一行。