“最佳"C++ 的输入文件格式?

quot;Bestquot; Input File Formats for C++?(“最佳C++ 的输入文件格式?)
本文介绍了“最佳"C++ 的输入文件格式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在着手开发一款新软件,该软件最终需要一些强大且可扩展的文件 IO.那里有很多格式.XML、JSON、INI 等.然而,总有优缺点,所以我想我会征求一些社区意见.

I am starting work on a new piece of software that will end up needing some robust and expandable file IO. There are a lot of formats out there. XML, JSON, INI, etc. However, there are always plusses and minuses so I thought I would ask for some community input.

以下是一些粗略的要求:

Here are some rough requirements:

  1. 格式是标准"...如果不需要,我不想重新发明轮子.它不一定是正式的 IEEE 标准,但作为新用户,您可以通过谷歌搜索并获取一些信息,可能有一些超出 vi 的支持工具(编辑器).(尽管软件用户通常会精通计算机并乐于使用 vi.)
  2. 与 C++ 轻松集成.我不想使用 100mb 的库和三个不同的编译器来启动和运行它.
  3. 支持表格输入(2d、n 维)
  4. 支持 POD 类型
  5. 可以在需要更多输入时扩展,很好地绑定到变量等.
  6. 解析速度并不是很重要
  7. 理想情况下,写(反映)和读一样容易
  8. 在 Windows 和 Linux 上运行良好
  9. 支持合成(一个文件引用另一个要读取的文件,依此类推.)
  10. 人类可读

在一个完美的世界里,我会使用一个只有头文件的库或一些干净的 STL 实现,但如果它运行良好,我可以使用 Boost 或一些小型外部库.

In a perfect world, I would use a header-only library or some clean STL implementation, but I'm fine with leveraging Boost or some small external library if it works well.

那么,您对各种格式有何看法?缺点?优势?

So, what are your thoughts on various formats? Drawbacks? Advantages?

编辑

要考虑的选项?还有什么要补充的吗?

Options to consider? Anything else to add?

  • XML
  • YAML
  • SQLite
  • Google 协议缓冲区
  • 提升序列化
  • INI
  • JSON

推荐答案

就我而言,我认为要走的路是 XML.

For my purposes, I think the way to go is XML.

  1. 格式是一种标准,但允许对架构进行修改和灵活调整,以便随着程序需求的发展而变化.
  2. 有几个库选项.有些较大 (Xerces-C) 有些较小 (ezxml),但有很多选择,因此我们不会局限于单一提供商或非常具体的解决方案.
  3. 它可以支持表格输入(2d,n维).这需要在我们的"端进行更多的解析工作,这可能是 XML 的最薄弱环节.
  4. 支持 POD 类型:绝对支持.
  5. 可以在需要更多输入时进行扩展,通过架构修改和解析器修改很好地绑定到变量等.
  6. 解析速度并不是很重要,因此处理一个或多个文本文件不是问题.
  7. XML 可以通过编程方式编写,就像阅读一样容易.
  8. 在 Windows 和 Linux 或任何其他支持 C 和文本文件的操作系统上运行良好.
  9. 支持合成(一个文件引用另一个要读取的文件,依此类推.)
  10. 人类可读的许多文本编辑器(Sublime、vi 等)支持开箱即用的语法高亮显示.许多网络浏览器都能很好地显示数据.

感谢大家的好评!我认为如果我们想要一个纯粹的二进制解决方案,Protocol Buffers 或 boost::serialization 可能是我们应该采用的方式.

Thanks for all the great feedback! I think if we wanted a purely binary solution, Protocol Buffers or boost::serialization is likely the way that we would go.

这篇关于“最佳"C++ 的输入文件格式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

FastAPI + Tortoise ORM + FastAPI Users (Python) - Relationship - Many To Many(FastAPI+Tortoise ORM+FastAPI用户(Python)-关系-多对多)
Window functions not working in pd.read_sql; Its shows error(窗口函数在pd.read_sql中不起作用;它显示错误)
(Closed) Leaflet.js: How I can Do Editing Geometry On Specific Object I Select Only?((已关闭)Leaflet.js:如何仅在我选择的特定对象上编辑几何图形?)
Parsing JSON into oracle sql(将JSON解析为Oracle SQL)
in sqlite update trigger with multiple if/Case Conditions(在具有多个IF/CASE条件的SQLite UPDATE触发器中)
Android: Why is Room so slow?(Android:为什么Room这么慢?)