从文本文件加载std :: map

时间:2012-06-08 15:07:45

标签: c++ map text-parsing

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

我现在拥有的是:

  • xml with xsd generated code(overkill)
  • 协议缓冲区(也是矫枉过正)
  • INI样式文本文件

我喜欢INI文件的语法,但我不想为此编写解析器。听起来像我会做很多人在我面前做过的事情。是不是有某种类型的库来读取像这样的简单结构化文件?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

如果您身处MS世界,可以使用

GetPrivateProfileSectionNames
GetPrivateProfileString
WritePrivateProfileString

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