Heim >Backend-Entwicklung >C++ >Wie kann ich mit C die Zeilennummer einer INI-Datei ermitteln, in der eine bestimmte Option oder ein bestimmter Abschnitt gefunden wird?
Plattformübergreifende Methode zum Abrufen der Zeilennummer einer INI-Datei, in der die angegebene Option gefunden wurde
Problem:
Suche nach einer C-Bibliothek (wie boost::program_options), die die Zeilennummer einer INI-Datei zurückgeben kann, in der eine bestimmte Option oder ein bestimmter Abschnitt gefunden wurde.
Anwendungsfälle:
Antwort:
Die Möglichkeiten von Boost nutzen Spirit, eine Lösung wurde mit line_pos_iterator erstellt.
Implementierungsdetails:
POSITIONSINFO = 0:
POSITIONSINFO = 1:
<code class="cpp">struct textnode_t { int sline, eline, scol, ecol; string_t text; };</code>
Code-Snippet:
<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>
Zusätzliche Ressourcen:
Wichtiger Hinweis: Die bereitgestellte Lösung erfordert keine C 11-Unterstützung, wurde aber verwendet, um das Ergebnis der Analyse zu sichern.
Das obige ist der detaillierte Inhalt vonWie kann ich mit C die Zeilennummer einer INI-Datei ermitteln, in der eine bestimmte Option oder ein bestimmter Abschnitt gefunden wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!