在使用MFC读取csv文件的每一行并按逗号分隔时遇到这样的问题:
csv文件是用逗号作为列分隔符的,我读到csv文件的一行后,也是按照逗号来进行分割的,以便能够把这一行字符串按照原本csv文件中列的形式分割出来。但是当某个单元格的数据本身就带有逗号时(比如有一个单元格是“中国,朝鲜”),而且该逗号也是英文半角的,这个时候我的分隔便出错了,因为这个逗号的存在,原本csv中占10列的一行现在被分割成了11个,该如何解决?
2015/01/21 10:00更新
问题已经解决,今天有空会贴上解决方法和代码,谢谢各位的热心帮助。
只能采纳一个回答,就选kepler84的吧,也非常感谢Chobits提供的方法!
首先这种情况下每一列(或者只是带有逗号的那一列)必须是要有引号来表示“虽然有逗号但只是一列”这个语意的。否则的话这个CSV格式错误。
在有引号的情况下,这时你就不能用简单的split去处理字符串了。简单的方法是扫描字符串,并且标记当前字符是不是在引号里,如果在引号里,忽略逗号,否则碰到逗号就分割。
当然,更简单的方法是用已有的csv library。github上一大把。