【发布时间】:2018-01-20 12:43:30
【问题描述】:
我正在尝试读取一个 .csv 文件,其中填充了我拥有的程序的字符串。我编写了下面的代码来尝试读取每个单独的字符串。
string read_from_f(istream &in) {
string a;
char fill = '0';
while (fill != ',') {
in.get(fill);
if (fill != ',') {
a += fill;
}
}
return a;
}
这最终不起作用,因为我的一些字符串中有逗号,并且结构如下。 “........”、“唐纳德、特朗普”、“.....”
当我在调试时查看本地人时,in.get() 不会从每个字符串中读取双引号。有没有一种方法可以让我从引号读取到引号,以免出现任何意外错误?
【问题讨论】:
-
如果您确定每个数据值都是一个字符串,为什么不使用双引号而不是逗号作为分隔符才读取呢?然后你只需要忽略所有其他结果(这只是一个逗号),你就会拥有一切
-
您需要编写或至少使用适当的 CSV 解析器 - 我在 bitbucket.org/neilb/csvparse/src 有一个 - 您不能仅使用 C++ 标准库工具来做到这一点。
-
创建一个appointment with your rubber duck 来解释您提出的解析 CSV 文件的算法。在得到橡皮鸭的批准之前,不要尝试编写另一行代码。
-
发帖前请先搜索。 StackOverflow 上已经有大量类似的帖子。尝试使用关键字“stackoverflow c++ 读取文件 csv”