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

Patricia Arquette
Lepaskan: 2024-10-25 04:31:02
asal
690 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!