当前位置: 首页 > 面试题库 >

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

卢承弼
2023-03-14
问题内容

我正在开始开发新软件,最终将需要一些强大且可扩展的文件IO。有很多格式。XML,JSON,INI等。但是,总会有优缺点,所以我想我会要求社区提供一些意见。

以下是一些基本要求:

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

在理想的情况下,我会使用仅标头的库或一些干净的STL实现,但如果能很好地使用Boost或一些小型外部库,我会很好。

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

编辑

选择方案?还有什么要补充的吗?

  • XML格式
  • YAML
  • SQLite的
  • Google协议缓冲区
  • 加速序列化
  • Benigni
  • JSON格式

问题答案:

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

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

感谢您的宝贵意见!我认为,如果我们想要一个纯二进制的解决方案,则可以使用Protocol Buffer或boost :: serialization。



 类似资料:
  • 问题内容: 我是android移动开发的新手(Android Studio本机开发- 新知识)。在这里,我想问一个有关输入验证最佳实践的问题。据我们所知,开发人员何时开发输入表单。我们需要防止用户在文本字段中输入错误的内容。所以这是我的问题 我们可以只为验证目的创建一个Java文件吗?所有输入形式,都只能转到一个验证文件(如果一个应用中有许多输入页面屏幕)。如果 是 ,如何才能得到该技术为我学习学

  • 问题内容: 根据我的经验, 事件通常仅在您离开()控件后才会发生。 有没有一种方法可以强制浏览器在每次内容更改时触发?如果没有,“手动”跟踪此问题的最优雅方法是什么? 使用事件并不可靠,因为您可以右键单击该字段并选择“粘贴”,这将更改该字段而无需任何键盘输入。 是唯一的方法吗?..丑陋的:-) 问题答案: 因此,您是否希望事件在按键,模糊 和 粘贴时触发?太神奇了。 如果您想跟踪键入的更改,请使用

  • 我使用下面的代码来限制用户上传文件格式,即在上传对话框中,他将只能看到那些特定的文件。 type="file"接受=". pdf,. jpg,. jpeg,. jpe,. jfif,. tif,. tiff,. doc,. docx,. xls,. xlsx,. csv" 它在Chrome、Mozilla和IE9及以上版本中运行良好。但这在IE8和Safari中不起作用。 如何在IE8和Safar

  • 我正在尝试使用hadoop map reduce,但不是在映射器中一次映射每一行,而是一次映射整个文件。

  • 问题内容: 我有一个像这样的简单表格(仅用于说明目的)… 我使用CSS的布局方法如下… 所有这些都很好地对齐了,除了我的元素(无论如何在Firefox中)并不总是与其他元素相同。通常,它会缩小几个像素。 我尝试过将宽度更改为像素大小(例如),但并没有改变。 使它们全部具有相同宽度的最佳方法是什么?我希望这不会再打我设置的单独,或将它们放入表… 问题答案: 解决方案是为表单元素指定盒子模型,当您使用

  • 本文向大家介绍C ++中的最佳除法,包括了C ++中的最佳除法的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个正整数列表;相邻的整数将执行浮点除法。因此,例如[2,3,4]-> 2/3 /4。现在,我们可以在任意位置添加任意数量的括号以更改这些操作的优先级。我们应该找出如何添加括号以获得最大的结果,我们必须找到字符串格式的相应表达式。我们的表达式不应包含多余的括号。因此,如果输入类似于[1