这是一件非常简单的事情,所以我想保持它听起来很简单。我想要的只是从文件中加载一堆键值对,并将它们填充到地图中。我并不关心文本的结构,只要它易于阅读即可。
我现在拥有的是:
- 带有 xsd 生成代码的 xml(矫枉过正)
- 协议缓冲区(也是矫枉过正)
- INI 样式文本文件
我喜欢 INI 文件的语法,但我不想为此编写解析器。在我看来,我会做很多人在我之前做过的事情。没有某种库可以读取这样的简单结构化文件吗?
这是一件非常简单的事情,所以我想保持它听起来很简单。我想要的只是从文件中加载一堆键值对,并将它们填充到地图中。我并不关心文本的结构,只要它易于阅读即可。
我现在拥有的是:
我喜欢 INI 文件的语法,但我不想为此编写解析器。在我看来,我会做很多人在我之前做过的事情。没有某种库可以读取这样的简单结构化文件吗?
由于您似乎想要人类可能的最简单的东西,我将建议一些非常简单的东西,根据您的地图内容可能会或可能不会工作。如果您的地图数据值是包含空格的字符串,这将不起作用。如果它们是不带空格的字符串或数字,则您已设置。
这不是经过测试的代码,但它很接近且简单,因此即使它没有完全编译,你也应该没问题。只需将 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;
如果您在 MS 世界中,您可以使用
GetPrivateProfileSectionNames
GetPrivateProfileString
WritePrivateProfileString
从ini文件或regestry中读取。如果要编写 Unicode,请确保新创建的文件获取 UTF16 的 BOM。