从文本文件加载std :: map

W. *_*man 7 c++ map text-parsing

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

我现在拥有的是:

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

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

Joh*_*0te 7

既然你似乎想要人类最简单的东西,我会建议一些非常简单的东西,根据你的地图内容可能会或可能不会起作用.如果您的地图数据值是包含空格的字符串,则此方法无效.如果它们是没有空格或数字的字符串,则设置为.

这不是经过测试的代码,但是它非常简单,所以即使它没有完全编译也应该没问题.只需将KeyType和ValueType更改为int,string,float或您在文件中实际使用的任何内容.

设置文件如:

key value
key2 value2
key3 value3
key4 value4
Run Code Online (Sandbox Code Playgroud)

阅读如下:

KeyType key;
ValueType value;

std::map<KeyType, ValueType> myMap;
while (infile >> key >> value)
    myMap[key] = value;
Run Code Online (Sandbox Code Playgroud)

  • -1,循环条件应为`while(infile >> key >> value)`和循环体`myMap [key] = value;`更简单 (4认同)
  • 这确实非常简单!能够完美地完成我正在做的事情.仍然,不是INI格式,但应该工作 (2认同)