获取找到给定选项的 INI 文件行号的跨平台方法
问题:
寻找一个 C 库(如 boost::program_options),它可以返回找到给定选项或部分的 INI 文件的行号。
用例:
响应:
利用 Boost 的可能性Spirit,使用 line_pos_iterator 制定了解决方案。
实现细节:
POSITIONSINFO = 0:
POSITIONSINFO = 1:
<code class="cpp">struct textnode_t { int sline, eline, scol, ecol; string_t text; };</code>
代码片段:
<code class="cpp">#include <map> #include <string> #include <iterator> #include <boost/tuple/tuple_comparison.hpp> template <typename S = std::string, typename Cmp = std::less<S>> class IniFile { public: IniFile(Cmp cmp = Cmp()) : _cmp(cmp) {} IniFile(const std::string& filename, Cmp cmp = Cmp()) : _cmp(cmp) { open(filename); } void open(const std::string& filename); typedef S string_t; #if POSITIONINFO struct textnode_t { int sline, eline, scol, ecol; string_t text; // ... }; #else typedef string_t textnode_t; #endif typedef std::pair<textnode_t, textnode_t> keyvalue_t; typedef std::map<textnode_t, textnode_t> section_t; typedef std::map<textnode_t, section_t> sections_t; private: Cmp _cmp; };</code>
其他资源:
重要提示:提供的解决方案不需要 C 11 支持,但它用于转储解析结果。
以上是如何使用 C 获取找到特定选项或部分的 INI 文件的行号?的详细内容。更多信息请关注PHP中文网其他相关文章!