Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Tokenize `std::string` dengan Fungsi C?

Bagaimana untuk Tokenize `std::string` dengan Fungsi C?

Barbara Streisand
Barbara Streisandasal
2024-11-07 07:02:02473semak imbas

How to Tokenize a `std::string` with C Functions?

Tokenizing std::string dengan C Functions

Tokenizing rentetan ialah operasi asas dalam pengaturcaraan. Walau bagaimanapun, apabila bekerja dengan fungsi C seperti strtok(), yang memerlukan rentetan char*, token secara langsung std::string boleh dihadapi dengan cabaran.

strtok() dengan std::string

Untuk menggunakan strtok() dengan std::string, satu pilihan ialah menukarnya kepada const char* menggunakan .c_str(). Walau bagaimanapun, ini mungkin tidak selalu diingini, kerana ia menyediakan perwakilan baca sahaja bagi rentetan.

Pendekatan Alternatif

Penyelesaian yang lebih sesuai ialah memanfaatkan std::istringstream dan bukannya strtok( ). std::istringstream membenarkan tokenisasi berasaskan strim bagi std::string. Berikut ialah contoh:

#include <iostream>
#include <string>
#include <sstream>

int main() {
    std::string myText("some-text-to-tokenize");
    std::istringstream iss(myText);
    std::string token;

    while (std::getline(iss, token, '-')) {
        std::cout << token << std::endl;
    }
}

Kod ini mencipta std::istringstream daripada std::string dan membaca token daripadanya sehingga ia menemui pembatas yang ditentukan ('-' dalam kes ini).

Pilihan Tambahan

Untuk keupayaan tokenisasi yang lebih maju, perpustakaan seperti Boost menyediakan penyelesaian komprehensif yang menawarkan fleksibiliti dan ciri yang lebih besar berbanding strtok().

Atas ialah kandungan terperinci Bagaimana untuk Tokenize `std::string` dengan Fungsi 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