2011-03-08 99 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或简单的解析器来解析每一行。