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
Lepaskan: 2024-11-08 16:19:02
asal
722 orang telah melayarinya

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

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!

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