从文本文件加载标准::映射
load std::map from text file
这是
一件非常简单的事情,所以我想让它听起来很简单。我想要的只是从文件中加载一堆键值对,并将它们填充到映射中。我真的不在乎文本的结构如何,只要它易于阅读。
我现在拥有的是:
- 带有 XSD 生成的代码的 XML(矫枉过正)
- 协议缓冲区(也矫枉过正)
- 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 文件或注册表读取。如果要编写 Unicode,请确保新创建的文件获得 UTF16 的 BOM。
相关文章:
- 在子集化后将包含索引号的列表列表映射到标准索引序列
- 定义具有非标准签名的自定义映射比较器
- 如何将整数向量插入到键中,标准::映射的值
- 标准::映射::合并的计算时间复杂度
- 标准::映射转换器模板
- 从另一个常量标准::映射初始化一个常量标准::映射的一部分
- 替换标准::映射值时崩溃
- 标准::键映射和/或 boost::any 类型的值的类型检查
- 如果可能,标准::映射分配是否静态
- 如何在标准::映射中try_emplace POD 结构?
- 如何通过套接字传输标准::多映射数据
- 多类型标准映射
- 五月标准::映射键地址值数
- 处理对存储在私有映射中的值的封装访问的标准方法,而不破坏C++中的抽象
- 模板标准::映射为类成员
- 模板标准::映射::迭代器实例化
- C++ 如何在标准::多映射中插入
- 推进标准映射的迭代器
- 标准::映射 标准::集合包含重复的键
- std::映射标准分配器性能与块分配器