C ++的“最佳”输入文件格式?
我正在开始开发新软件,最终将需要一些强大且可扩展的文件IO。有很多格式。XML,JSON,INI等。但是,总会有优缺点,所以我想我会要求社区提供一些意见。
以下是一些基本要求:
- 格式是“标准” …如果不需要,我不想重新发明轮子。它不一定是正式的IEEE标准,但是您可以通过Google并以新用户的身份获得一些信息,它可能具有vi之外的一些支持工具(编辑器)。(尽管软件用户通常会精通计算机,并乐于使用vi。)
- 轻松与C ++集成。我不想随身携带一个100mb的库和三个不同的编译器来启动和运行它。
- 支持表格输入(二维,n维)
- 支持POD类型
- 可以扩展,因为需要更多的输入,可以很好地绑定到变量等。
- 解析速度并不十分重要
- 理想情况下,写(反射)和阅读一样容易
- 在Windows和Linux上运作良好
- 支持合成(一个文件引用另一个文件进行读取,依此类推。)
- 人类可读
在理想的情况下,我会使用仅标头的库或一些干净的STL实现,但如果能很好地使用Boost或一些小型外部库,我会很好。
那么,您对各种格式有何看法?缺点?优点?
选择方案?还有什么要补充的吗?
- XML格式
- YAML
- SQLite的
- Google协议缓冲区
- 加速序列化
- Benigni
- JSON格式
回答:
就我的目的而言,我认为要走的路是 。
- 该格式是一种标准,但允许修改和灵活性,以便随着程序需求的发展而更改架构。
- 有几个库选项。有些较大(Xerces-C),有些较小(ezxml),但是有很多选择,因此我们不会只限于一个提供程序或非常特定的解决方案。
- 它可以支持表格输入(二维,n维)。这需要在“我们的”一端进行更多的解析工作,并且可能是XML的最弱点。
- 支持POD类型:绝对。
- 可以根据需要的更多输入进行扩展,可以通过模式修改和解析器修改很好地绑定到变量等。
- 解析速度并不是很重要,因此处理一个或多个文本文件不是问题。
- XML可以以编程方式编写,就像读取一样容易。
- 在Windows和Linux或任何其他支持C和文本文件的OS上运行良好。
- 支持合成(一个文件引用另一个文件进行读取,依此类推。)
- Human Readable具有许多文本编辑器(Sublime,vi等),支持开箱即用地突出显示语法。许多Web浏览器都能很好地显示数据。
感谢您的宝贵意见!我认为,如果我们想要一个纯二进制的解决方案,则可以使用Protocol Buffer或boost :: serialization。
以上是 C ++的“最佳”输入文件格式? 的全部内容, 来源链接: utcz.com/qa/399200.html