7

这是一件非常简单的事情,所以我想保持它听起来很简单。我想要的只是从文件中加载一堆键值对,并将它们填充到地图中。我并不关心文本的结构,只要它易于阅读即可。

我现在拥有的是:

  • 带有 xsd 生成代码的 xml(矫枉过正)
  • 协议缓冲区(也是矫枉过正)
  • INI 样式文本文件

我喜欢 INI 文件的语法,但我不想为此编写解析器。在我看来,我会做很多人在我之前做过的事情。没有某种库可以读取这样的简单结构化文件吗?

4

2 回答 2

7

由于您似乎想要人类可能的最简单的东西,我将建议一些非常简单的东西,根据您的地图内容可能会或可能不会工作。如果您的地图数据值是包含空格的字符串,这将不起作用。如果它们是不带空格的字符串或数字,则您已设置。

这不是经过测试的代码,但它很接近且简单,因此即使它没有完全编译,你也应该没问题。只需将 KeyType 和 ValueType 更改为 int、string、float 或您在文件中实际使用的任何内容。

设置文件,如:

key value
key2 value2
key3 value3
key4 value4

读起来像:

KeyType key;
ValueType value;

std::map<KeyType, ValueType> myMap;
while (infile >> key >> value)
    myMap[key] = value;
于 2012-06-08T15:30:20.567 回答
0

如果您在 MS 世界中,您可以使用

GetPrivateProfileSectionNames
GetPrivateProfileString
WritePrivateProfileString

从ini文件或regestry中读取。如果要编写 Unicode,请确保新创建的文件获取 UTF16 的 BOM。

于 2012-06-08T15:58:50.023 回答