【发布时间】:2013-04-14 15:46:01
【问题描述】:
我的任务很简单——我只需要解析这样的文件:
Apple = 1
Orange = 2
XYZ = 3950
但我不知道可用键的集合。我用 C# 解析这个文件比较容易,让我演示一下源代码:
public static Dictionary<string, string> ReadParametersFromFile(string path)
{
string[] linesDirty = File.ReadAllLines(path);
string[] lines = linesDirty.Where(
str => !String.IsNullOrWhiteSpace(str) && !str.StartsWith("//")).ToArray();
var dict = lines.Select(s => s.Split(new char[] { '=' }))
.ToDictionary(s => s[0].Trim(), s => s[1].Trim());
return dict;
}
现在我只需要使用 c++ 做同样的事情。我正在考虑使用boost::property_tree::ptree,但似乎我无法遍历 ini 文件。易读ini文件:
boost::property_tree::ptree pt;
boost::property_tree::ini_parser::read_ini(path, pt);
但是不能迭代,参考这个问题Boost program options - get all entries in section
问题是 - 在 C++ 上编写上述 C# 代码模拟的最简单方法是什么?
【问题讨论】:
-
当然可以迭代 ptree,事实上它是微不足道的,正如我现在的答案所示(更新)(注意:program-options != property-tree )