用 C++ 解析/编写 CSV 的首选库是啥? [关闭]
Posted
技术标签:
【中文标题】用 C++ 解析/编写 CSV 的首选库是啥? [关闭]【英文标题】:what's the preferred library for CSV parsing/writing in C++? [closed]用 C++ 解析/编写 CSV 的首选库是什么? [关闭] 【发布时间】:2011-12-11 06:05:05 【问题描述】:我看过这个帖子:How can I read and parse CSV files in C++?
但是为像 CSV 解析器这样通用的东西重新发明***似乎很愚蠢。 Boost 有一些有助于解析的例程,但没有开箱即用的东西。
在其他地方,我看到了与 .NET 或其他特定平台相关的推荐库。很难相信没有首选的开放 C++ 库可以为这个例程做点什么。
有什么建议吗?
【问题讨论】:
CSV parser in C++的可能重复 我重新发明了***,因为它非常容易根据我的数据类型进行定制。 重复以下问题:***.com/questions/1120140/csv-parser-in-c 无耻插件:code.google.com/p/csvpp 我的工作流是允许您读取任意长度的文件。在后端我只使用向量和地图。 C CSV 解析器:sourceforge.net/projects/cccsvparser C CSV 编写器:sourceforge.net/projects/cccsvwriter 【参考方案1】:没有用于 CSV 解析的“首选”库,因为用 C++ 编写自己的解析器比下载一些库、阅读如何使用它、将其与代码链接、可能遇到一些错误、将代码更改为适合您的需求等。 CSV解析很简单,你需要做三件事:
检测字段分隔符。 检测行分隔符。 跳过引号内的分隔符。文件编码也存在问题,您要使用哪些分隔符,文件中的多余空格和空行等等。
如果您仍想使用“首选”CSV 解析器,那么也许您应该完全跳过 C++ 编码并转而使用其他语言。
【讨论】:
为一个文件编写一个 CSV 解析器可能很简单,但编写一个接受各种不同 CSV 格式的通用 CSV 解析器是一项重大工作。一些程序在其 CSV 输出行的顶部有一个或多个注释行,一些程序有一个标题行,其他的在 cmets 内有标题。有些程序使用逗号作为小数点,有些程序使用点。还有很多其他的事情你可以想到。文本是用单引号、双引号还是用花括号表示的?为所有这些组合编写单元测试需要大量工作。 您无法“自动检测”CSV 文件的格式。设计太简单了。您必须提前知道要处理的文件的结构(限制器是什么,是否有任何特殊的注释行等),没有办法让一些“通用”库以某种方式检测每个 CSV 的格式文件。如果您曾经使用过像 Microsoft Excel 这样的电子表格程序,您会发现 Excel 有一个默认格式,而对于不同的格式,您需要手动设置所有参数。以上是关于用 C++ 解析/编写 CSV 的首选库是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章