Bagaimana untuk Tokenize `std::string` Tanpa Menggunakan `strtok()`?

Susan Sarandon
Lepaskan: 2024-11-07 18:34:03
asal
982 orang telah melayarinya

How to Tokenize a `std::string` Without Using `strtok()`?

Tokenisasi std::string dengan strtok

Tokenizing std::string boleh dilakukan menggunakan pelbagai kaedah. Satu pendekatan biasa ialah menggunakan fungsi C strtok(), yang mengambil tatasusunan aksara sebagai input dan memecahkannya kepada token berdasarkan pembatas yang ditentukan. Walau bagaimanapun, objek std::string tidak boleh dihantar terus ke strtok() kerana ia tidak menghala ke tatasusunan aksara.

Untuk mengatasi pengehadan ini, kita boleh menggunakan kaedah alternatif untuk tokenize std::string. Satu kaedah sedemikian ialah menggunakan objek istringstream, yang boleh dibuat dengan menghantar std::string kepada pembinanya. Objek istringstream kemudiannya boleh digunakan untuk membaca token daripada rentetan menggunakan fungsi getline(), yang mengambil pembatas sebagai argumen kedua.

#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, objek istringstream digunakan untuk membaca std::string "some-text-to-tokenize" ke dalam satu siri token, dibatasi oleh aksara "-". Fungsi getline() digunakan untuk mengekstrak setiap token daripada rentetan, dan token kemudian dicetak ke konsol.

Alternatif untuk menggunakan istringstream ialah menggunakan utiliti seperti Boost.Tokenizer, yang menyediakan pendekatan yang lebih fleksibel dan boleh diubah suai untuk tokenizing rentetan. Walau bagaimanapun, pendekatan istringstream secara amnya mencukupi untuk keperluan tokenisasi asas.

Atas ialah kandungan terperinci Bagaimana untuk Tokenize `std::string` Tanpa Menggunakan `strtok()`?. 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