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
Lepaskan: 2024-11-14 11:28:02
asal
1027 orang telah melayarinya

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

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

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!

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