Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Memisahkan Rentetan kepada Token dalam C Menggunakan std::getline()?

Bagaimana untuk Memisahkan Rentetan kepada Token dalam C Menggunakan std::getline()?

Barbara Streisand
Barbara Streisandasal
2024-11-20 16:38:11675semak imbas

How to Split a String into Tokens in C   Using std::getline()?

Memisahkan Token Rentetan Menggunakan C std::string

Soalan ini menangani cabaran membahagikan C std::string kepada berbilang token, terutamanya menggunakan pembatas ";". Walaupun beberapa penyelesaian yang dicadangkan melibatkan perpustakaan luaran seperti Boost, garis panduan untuk projek ini melarang penggunaannya. Oleh itu, kami meneroka pendekatan yang lebih mudah menggunakan Perpustakaan Standard C.

Satu kaedah yang berkesan ialah menggunakan fungsi std::getline(), yang menawarkan kepelbagaian dalam menentukan pembatas. Dalam kes ini, kami boleh melaksanakan proses tokenisasi seperti berikut:

#include <sstream>
#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<string> strings; // Vector to store split strings
    istringstream f("denmark;sweden;india;us"); // Input stringstream
    string s; // Variable to store individual strings

    while (getline(f, s, ';')) {
        cout << s << endl; // Display split string
        strings.push_back(s); // Store string in vector
    }
}

Dalam pelaksanaan ini, kami mencipta aliran rentetan daripada rentetan input "denmark;sweden;india;us". Fungsi std::getline() digunakan untuk mengulangi aliran rentetan dan mendapatkan semula token yang dipisahkan oleh ";" pembatas. Setiap token yang diambil dicetak dan ditambah pada vektor rentetan untuk pemprosesan selanjutnya.

Dengan menggunakan pendekatan ini, kami mencapai tokenisasi rentetan input yang diingini tanpa bergantung pada perpustakaan luaran, mematuhi garis panduan yang ditetapkan.

Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan kepada Token dalam C Menggunakan std::getline()?. 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