Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengekstrak Nombor Baris untuk Pilihan Fail INI Menggunakan Perpustakaan C?

Bagaimana untuk Mengekstrak Nombor Baris untuk Pilihan Fail INI Menggunakan Perpustakaan C?

Patricia Arquette
Patricia Arquetteasal
2024-10-25 04:31:02693semak imbas

How to Extract Line Numbers for INI File Options Using C   Libraries?

Mencari Nombor Baris Pilihan Fail Ini Menggunakan C Libraries

Masalah:

Pembangun selalunya perlu mencari nombor baris di mana pilihan atau bahagian tertentu ditemui dalam fail INI. Maklumat ini boleh menentukan ralat atau membantu dalam mengurus konfigurasi.

C Library untuk INI File Parsing:

  • boost::program_options: Pustaka ini menyediakan penghuraian untuk fail konfigurasi gaya INI tetapi tidak menawarkan pelaporan nombor baris.
  • Tingkatkan Semangat (Penyelesaian Tersuai): Boost Spirit ialah rangka kerja parser C yang elegan yang boleh disesuaikan dengan menghuraikan fail INI dan mengekstrak nombor baris.

Penyelesaian Tersuai dengan Boost Spirit:

Penyelesaian tersuai yang dibentangkan di sini menggunakan rangka kerja parser Boost Spirit dan menyediakan nombor baris penuh maklumat.

Contoh Kod:

<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>

Dalam kod ini, textnode_t menyimpan nombor baris dan maklumat lajur, manakala inifile mentakrifkan tatabahasa untuk menghurai fail INI.

Penggunaan:

Muatkan fail INI ke dalam std::string bernama input dan lelaran melalui peta yang dihuraikan:

<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>

Kelebihan Penyelesaian Tersuai:

  • Maklumat nombor baris penuh untuk kedua-dua kunci dan nilai
  • Keupayaan untuk mengendalikan ulasan dan ruang kosong
  • Fleksibiliti untuk menyesuaikan tingkah laku penghuraian mengikut keperluan

Kesimpulan:

Dengan menggunakan Boost Spirit, anda boleh menghuraikan fail INI dan mendapatkan nombor baris dengan tepat. Fungsi ini penting untuk mengesahkan fail konfigurasi dan menyelesaikan isu konfigurasi.

Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Nombor Baris untuk Pilihan Fail INI Menggunakan Perpustakaan C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn