"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > C फ़ंक्शंस के साथ `std::string` को कैसे टोकनाइज़ करें?

C फ़ंक्शंस के साथ `std::string` को कैसे टोकनाइज़ करें?

2024-11-10 को प्रकाशित
ब्राउज़ करें:620

How to Tokenize a `std::string` with C Functions?

सी फ़ंक्शंस के साथ std::string को टोकनाइज़ करना

स्ट्रिंग को टोकनाइज़ करना प्रोग्रामिंग में एक मौलिक ऑपरेशन है। हालाँकि, जब strtok() जैसे C फ़ंक्शंस के साथ काम करते हैं, जिसके लिए char* स्ट्रिंग की आवश्यकता होती है, तो std::string को सीधे टोकन देने से चुनौतियों का सामना किया जा सकता है।

strtok() with std::string

std::string के साथ strtok() का उपयोग करने के लिए, एक विकल्प इसे .c_str() का उपयोग करके const char* में परिवर्तित करना है। हालाँकि, यह हमेशा वांछनीय नहीं हो सकता है, क्योंकि यह स्ट्रिंग का केवल पढ़ने योग्य प्रतिनिधित्व प्रदान करता है।

वैकल्पिक दृष्टिकोण

एक अधिक उपयुक्त समाधान strtok( के बजाय std::istringstream का लाभ उठाना है) ). std::istringstream एक std::string के स्ट्रीम-आधारित टोकननाइजेशन की अनुमति देता है। यहां एक उदाहरण है:

#include 
#include 
#include 

int main() {
    std::string myText("some-text-to-tokenize");
    std::istringstream iss(myText);
    std::string token;

    while (std::getline(iss, token, '-')) {
        std::cout 

यह कोड std::string से एक std::istringstream बनाता है और इससे टोकन पढ़ता है जब तक कि यह इस मामले में निर्दिष्ट सीमांकक ('-') का सामना नहीं करता है।

अतिरिक्त विकल्प

अधिक उन्नत टोकननाइजेशन क्षमताओं के लिए, बूस्ट जैसे पुस्तकालय व्यापक समाधान प्रदान करते हैं जो स्ट्रोक() की तुलना में अधिक लचीलापन और सुविधाएं प्रदान करते हैं।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3