Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Boleh Mengasingkan Rentetan Dibatasi Koma dengan Cekap dalam C Menggunakan aliran rentetan?

Bagaimanakah Saya Boleh Mengasingkan Rentetan Dibatasi Koma dengan Cekap dalam C Menggunakan aliran rentetan?

Barbara Streisand
Barbara Streisandasal
2024-11-23 07:18:16243semak imbas

How Can I Efficiently Separate Comma-Delimited Strings in C   Using stringstream?

Memisahkan Rentetan Dibatasi Koma menggunakan Stringstream

Dalam C , aliran rentetan ialah alat yang berkuasa untuk memanipulasi rentetan dan mengekstrak data. Walaupun ia boleh memisahkan rentetan yang dibatasi ruang dengan mudah, rentetan yang dipisahkan koma memerlukan pendekatan yang diubah suai sedikit.

Pendekatan Asal:

Kod berikut menunjukkan pendekatan asal menggunakan aliran rentetan untuk memisahkan rentetan dengan ruang:

std::string str = "abc def,ghi";
std::stringstream ss(str);

string token;

while (ss >> token)
{
    printf("%s\n", token.c_str());
}

Output:

abc
def,ghi

Pendekatan ini gagal memisahkan token yang dipisahkan koma kerana >> operator dalam aliran rentetan menganggap aksara ruang putih sebagai pembatas.

Pendekatan Diubah Suai:

Untuk memisahkan rentetan yang dipisahkan koma, kami boleh menggunakan fungsi getline() yang disediakan oleh aliran rentetan. Fungsi ini membolehkan kita membaca rentetan sehingga pembatas tertentu ditemui. Berikut ialah kod yang diubah suai:

#include <iostream>
#include <sstream>

std::string input = "abc,def,ghi";
std::istringstream ss(input);
std::string token;

while(std::getline(ss, token, ',')) {
    std::cout << token << '\n';
}

Output:

abc
def
ghi

Penjelasan:

Fungsi getline() membaca rentetan input ss dan mengekstrak token sehingga kejadian pertama aksara yang kami tentukan sebagai pembatas (di sini, ia adalah koma). Ia kemudian memberikan token yang diekstrak kepada rentetan token dan mengembalikan benar jika berjaya. Dengan memanggil getline() berulang kali, kami boleh mengulangi melalui token yang dipisahkan koma dalam rentetan input.

Pendekatan ini secara berkesan memisahkan rentetan yang dipisahkan koma kepada token individu, membolehkan pemprosesan atau manipulasi selanjutnya dalam program anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengasingkan Rentetan Dibatasi Koma dengan Cekap dalam C Menggunakan aliran rentetan?. 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