Bagaimanakah Anda Boleh Memisahkan Rentetan dengan Berbilang Pembatas dalam C ?

DDD
Lepaskan: 2024-11-16 15:58:03
asal
109 orang telah melayarinya

How Can You Split Strings with Multiple Delimiters in C  ?

Memisahkan Rentetan dengan Berbilang Pembatas

Apabila ditugaskan untuk membahagikan teks kepada unit yang bermakna, pembangun sering menghadapi keperluan untuk memisahkan rentetan menjadi perkataan. Walaupun kaedah konvensional mencukupi untuk pembatas tunggal, apakah pilihan yang tersedia apabila berbilang pembatas terlibat?

Untuk menangani cabaran ini, teknik menggunakan berbilang pembatas untuk pemisahan rentetan boleh dilaksanakan. Mari kita mendalami penyelesaiannya.

Dalam C , sintaks untuk menghuraikan rentetan dengan pembatas tunggal menggunakan aliran rentetan adalah seperti berikut:

std::stringstream stringStream(inputString);
std::string word;
while(std::getline(stringStream, word, delimiter)) 
{
    wordVector.push_back(word);
}
Salin selepas log masuk

Untuk menampung berbilang pembatas, kita mula-mula membaca keseluruhan baris menjadi penimbal. Selepas itu, kami mengulangi baris, mengenal pasti kedudukan di mana mana-mana pembatas yang ditentukan muncul. Dengan menolak kedudukan sebelumnya daripada kedudukan pembatas semasa, kita memperoleh subrentetan yang mewakili perkataan dan menambahnya pada vektor perkataan.

Sebagai contoh, jika kita memilih ruang, apostrof dan koma bertindih sebagai pembatas, kod berikut menyelesaikan tugas:

std::stringstream stringStream(inputString);
std::string line;
while(std::getline(stringStream, line)) 
{
    std::size_t prev = 0, pos;
    while ((pos = line.find_first_of(" ';", prev)) != std::string::npos)
    {
        if (pos > prev)
            wordVector.push_back(line.substr(prev, pos-prev));
        prev = pos+1;
    }
    if (prev < line.length())
        wordVector.push_back(line.substr(prev, std::string::npos));
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Memisahkan Rentetan dengan Berbilang Pembatas 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan