Maison >développement back-end >C++ >Comment extraire les numéros de ligne pour les options de fichiers INI à l'aide des bibliothèques C ?
Recherche des numéros de ligne des options de fichiers Ini à l'aide des bibliothèques C
Problème :
Les développeurs souvent devez trouver les numéros de ligne où se trouvent des options ou des sections spécifiques dans un fichier INI. Ces informations peuvent identifier les erreurs ou aider à gérer la configuration.
Bibliothèques C pour l'analyse des fichiers INI :
Solution personnalisée avec Boost Spirit :
La solution personnalisée présentée ici utilise le cadre d'analyse de Boost Spirit et fournit un numéro de ligne complet informations.
Exemple de code :
<code class="cpp">#include <boost/spirit/include/qi.hpp> #include <boost/spirit/include/support_line_pos_iterator.hpp> #include <map> #include <string> namespace qi = boost::spirit::qi; struct textnode_t { int sline, eline, scol, ecol; std::string text; }; // Define INI parser grammar qi::rule<boost::spirit::line_pos_iterator<std::string::const_iterator>, std::map<textnode_t, textnode_t>()> inifile;</code>
Dans ce code, textnode_t stocke le numéro de ligne et les informations de colonne, tandis que inifile définit la grammaire d'analyse des fichiers INI.
Utilisation :
Chargez le fichier INI dans un std::string nommé input et parcourez la carte analysée :
<code class="cpp">boost::spirit::line_pos_iterator<std::string::const_iterator> f(input.begin()), l(input.end()); std::map<textnode_t, textnode_t> data; qi::phrase_parse(f, l, inifile, qi::space, data); for (const auto& [k, v] : data) { std::cout << "Key: " << k.text << ", Line: " << k.sline << "\n" << "Value: " << v.text << ", Line: " << v.sline << "\n\n"; }</code>
Avantages de solution personnalisée :
Conclusion :
En utilisant Boost Spirit, vous pouvez analyser les fichiers INI et récupérer les numéros de ligne avec précision. Cette fonctionnalité est cruciale pour valider les fichiers de configuration et résoudre les problèmes de configuration.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!