Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh tokenize std::string menggunakan strtok() dalam C ?

Bagaimanakah saya boleh tokenize std::string menggunakan strtok() dalam C ?

Susan Sarandon
Susan Sarandonasal
2024-11-08 16:19:02698semak imbas

How can I tokenize a std::string using strtok() in C  ?

Tokenizing std::string dengan strtok()

Apabila bekerja dengan C , selalunya wajar untuk tokenize rentetan, membahagikannya kepada substring atau token yang lebih kecil berdasarkan a pembatas. Fungsi C strtok() ialah pilihan popular untuk tokenisasi rentetan, tetapi ia memerlukan input char*, manakala std::string ialah jenis rentetan pilihan dalam C . Artikel ini meneroka penyelesaian untuk menggunakan strtok() pada std::string.

Menggunakan Istringstream untuk Tokenisasi

Satu pendekatan ialah menggunakan objek istringstream untuk menukar std::string menjadi aliran aksara, yang kemudiannya boleh ditandakan oleh strtok(). Contohnya:

#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;
    }

    return 0;
}

Dalam contoh ini, istringstream iss dibina daripada std::string myText. Fungsi std::getline kemudiannya digunakan untuk mengekstrak token daripada strim, menggunakan aksara pembatas '-' sebagai pemisah. Setiap token dicetak ke konsol menggunakan std::cout.

Pendekatan Alternatif

Pilihan lain yang disebut dalam respons ialah menggunakan perpustakaan Boost, yang menyediakan keupayaan tokenisasi yang lebih fleksibel. Walau bagaimanapun, penyelesaian ini memerlukan perpustakaan Boost dipasang pada sistem.

Atas ialah kandungan terperinci Bagaimanakah saya boleh tokenize std::string menggunakan strtok() 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