C++ Academy · पाठ

string_view क्यों

स्ट्रिंग की प्रतिलिपियों से बचें

पाठ 1, कुल 4 में से13 चरण

string_view क्यों, CoddyKit पर C++ Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह C++ Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

प्रतिलिपियों की लागत

std::string को मान के रूप में पास करने पर पूरा बफ़र कॉपी हो जाता है। केवल पढ़ने के लिए उस प्रतिलिपि से कोई लाभ नहीं होता। std::string_view एक हल्का, किसी डेटा का स्वामी न होने वाला दृश्य है—सिर्फ़ एक सूचक और लंबाई। <string_view> शामिल करें।

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "hello";
    std::cout << sv << " len=" << sv.size() << "\n";
}

एक दृश्य में क्या होता है

string_view केवल पहले से मौजूद वर्णों का एक सूचक और उनकी लंबाई रखता है। यह डेटा का स्वामी नहीं होता और न ही उसकी प्रतिलिपि बनाता है।

#include <iostream>
#include <string>
#include <string_view>
int main() {
    std::string s = "world";
    std::string_view sv = s; // views s, no copy
    std::cout << sv << "\n";
}

केवल-पठन प्राचल

std::string_view स्वीकार करने का अर्थ है कि आपका फ़ंक्शन std::string, string literals और char arrays के साथ काम कर सकता है, बिना इनमें से किसी की प्रतिलिपि बनाए।

#include <iostream>
#include <string_view>
void greet(std::string_view name) {
    std::cout << "Hi, " << name << "\n";
}
int main() {
    greet("Ada");
    greet(std::string("Bob"));
}

कोई आवंटन नहीं

दृश्य बनाने पर कभी मेमोरी आवंटित नहीं होती, इसलिए उसकी प्रतिलिपि बनाना और उसे मान के रूप में इधर-उधर भेजना सस्ता होता है।

#include <iostream>
#include <string_view>
int main() {
    std::string_view a = "constant text";
    std::string_view b = a; // trivial copy
    std::cout << (a == b) << "\n";
}

सस्ती उप-स्ट्रिंग

किसी दृश्य पर substr लगाने से उसी मेमोरी में मौजूद दूसरा दृश्य मिलता है; कोई वर्ण कॉपी नहीं किया जाता।

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "abcdef";
    std::cout << sv.substr(2, 3) << "\n"; // cde
}

प्रदर्शन के उद्देश्य की तुलना

केवल पाठ की जाँच करने वाले फ़ंक्शनों के लिए string_view हीप आवंटन और प्रतिलिपि, दोनों से बचाता है। बार-बार चलने वाले लूप और पार्सिंग में यह महत्वपूर्ण होता है।

लंबाई और अनुक्रमण

दृश्य में परिचित इंटरफ़ेस उपलब्ध होता है: size(), empty(), अनुक्रमण और रेंज-आधारित पुनरावृत्ति।

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "C++";
    for (char c : sv) std::cout << c << "-";
    std::cout << "\n" << sv.size() << "\n";
}

दृश्य केवल-पठन होते हैं

आप string_view के माध्यम से वर्णों को बदल नहीं सकते; यह केवल पढ़ने की पहुँच देता है। बदलाव करने के लिए स्वामी वाली string आवश्यक है।

लिटरल से दृश्य तक

String literals सीधे दृश्यों में बदल जाते हैं, इसलिए स्थिर पाठ पास करना बेहद सस्ता होता है।

#include <iostream>
#include <string_view>
using namespace std::string_view_literals;
int main() {
    auto sv = "literal"sv;
    std::cout << sv.size() << "\n";
}

string का विकल्प नहीं

जब आपको पाठ का स्वामित्व रखना, उसे संग्रहीत करना या बदलना हो, तब std::string का उपयोग करें। अस्थायी, केवल-पठन प्राचलों के लिए std::string_view का उपयोग करें।

जीवनकाल संबंधी सावधानी

दृश्य अपने डेटा का स्वामी नहीं होता, इसलिए उसके पीछे के वर्णों का जीवनकाल दृश्य से अधिक होना चाहिए। इसका गलत उपयोग लटकते हुए दृश्यों का कारण बनता है, जिसे बाद के पाठ में समझाया गया है।

त्वरित जाँच

string_view के उद्देश्य के बारे में अपनी समझ जाँचें।

पुनरावलोकन

आपने string_view क्यों मौजूद है, यह सीखा:

  • यह किसी डेटा का स्वामी न होने वाला सूचक और लंबाई वाला दृश्य है।
  • इसे स्वीकार करने से केवल-पठन पाठ के लिए प्रतिलिपियों और आवंटनों से बचा जा सकता है।
  • यह strings, literals और char arrays के साथ काम करता है।
  • जिस डेटा को देखा जा रहा है, उसका जीवनकाल दृश्य से अधिक होना चाहिए।
शुरुआत निःशुल्क

एआई शिक्षक के साथ C++ सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
51
पाठ
203

अक्सर पूछे जाने वाले प्रश्न

क्या “string_view क्यों” पाठ निःशुल्क है?

हाँ — C++ Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “string_view क्यों” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“string_view क्यों” में मैं क्या सीखूँगा?

स्ट्रिंग की प्रतिलिपियों से बचें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C++ Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या C++ Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C++ Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“string_view क्यों” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस C++ Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर C++ Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. string_view क्यों
  2. दृश्य बनाना
  3. समस्याएँ और जीवनकाल
  4. स्ट्रिंग एल्गोरिदम
← C++ Academy पर वापस जाएँ