Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menghuraikan Token Rentetan dengan Cekap dalam C?

Bagaimanakah Saya Boleh Menghuraikan Token Rentetan dengan Cekap dalam C?

Barbara Streisand
Barbara Streisandasal
2024-11-14 11:28:021058semak imbas

How Can I Efficiently Parse String Tokens in C  ?

Menghuraikan Token Rentetan dengan Cekap dalam C

Untuk memisahkan rentetan secara berkesan kepada token yang dipisahkan oleh pembatas tertentu, C menawarkan mekanisme yang teguh. Sebagai contoh, jika rentetan anda terdiri daripada perkataan yang dipisahkan oleh koma bertitik (;), anda boleh menggunakan strategi berikut:

Menggunakan std::getline()

std ::getline() fungsi menyediakan pendekatan yang mudah tetapi serba boleh. Ia boleh memproses sebarang jenis pembatas, menjadikannya sesuai untuk mengekstrak garisan dan token. Berikut ialah contoh:

#include <sstream>
#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<string> strings;
    istringstream f("denmark;sweden;india;us");
    string s;    
    while (getline(f, s, ';')) {
        cout << s << endl;
        strings.push_back(s);
    }
}

Kod ini memulakan rentetan dan vektor. Ia kemudian menggunakan getline() untuk melelar melalui rentetan, membelahnya pada setiap koma bertitik. Setiap token dicetak dan ditambah pada vektor.

Fungsi Pemisahan Tersuai

Sebagai alternatif, anda boleh mencipta fungsi tersuai untuk mengendalikan tokenisasi:

#include <string>
#include <vector>

using namespace std;

vector<string> split(const string& str, char delimiter) {
    vector<string> tokens;
    string token;
    istringstream iss(str);
    while (getline(iss, token, delimiter)) {
        tokens.push_back(token);
    }
    return tokens;
}

Fungsi ini mengambil rentetan dan pembatas sebagai input dan mengembalikan vektor token. Ia beroperasi sama seperti getline(), tetapi memberikan kefleksibelan untuk menggunakan sebarang pembatas.

Pertimbangan Tambahan

Apabila bekerja dengan rentetan, adalah penting untuk mematuhi garis panduan keselamatan. Fungsi rentetan gaya C dan perpustakaan sumber terbuka seperti Boost mungkin mempunyai implikasi keselamatan. Oleh itu, bergantung pada fungsi C standard seperti std::getline() atau melaksanakan logik pemisahan tersuai adalah disyorkan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghuraikan Token Rentetan dengan Cekap dalam 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