आम तौर पर प्रोग्रामिंग में आपको वह चीज़ दोबारा बनाने की ज़रूरत नहीं पड़ती जो पहले से बनी हुई है। कई मानक एल्गोरिदम ऐसे हैं जिनका काम शायद किसी ने पहले ही आपके लिए कर दिया हो।
include डायरेक्टिवदूसरी फाइलों की सामग्री शामिल करने के लिए C++ include डायरेक्टिव का उपयोग करता है। ये इंक्लूड फाइल के सबसे ऊपर लिखे जाने चाहिए। कंपाइल के दौरान डायरेक्टिव वाली लाइन की जगह उस फाइल की सामग्री रख दी जाती है। इंक्लूड हो जाने के बाद नेमस्पेस वैसे ही रहते हैं जैसे मूल फाइल में थे।
मानक लाइब्रेरी में कई आम फंक्शन, एल्गोरिदम और डेटा स्ट्रक्चर उपलब्ध हैं। मानक लाइब्रेरी std नेमस्पेस का उपयोग करती है।
एक उदाहरण C की न्यूमेरिक्स लाइब्रेरी cmath है। यह गणित के कई आम ऑपरेशन उपलब्ध कराती है।
#include <cmath>
int cube_me(int a) {
// raise `a` to the third power
return std::pow(a, 3);
}
मानक लाइब्रेरी को डबल कोट " के बजाय एंगल ब्रैकेट <> के साथ इंक्लूड किया जाता है। फर्क इस जगह का है कि कंपाइलर संबंधित फाइलों को कहाँ खोजता है। एंगल ब्रैकेट वाले रूप में मौजूदा प्रोजेक्ट में खोज नहीं होती, बल्कि खोज सीधे सिस्टम की इंक्लूड डायरेक्टरी से शुरू होती है। अगर आपको लोकल फाइलें इंक्लूड करनी हों, तो डबल कोट का उपयोग कीजिए: #include "myfile"
C++ में string एक म्यूटेबल ऑब्जेक्ट है, जो टेक्स्ट को अक्षरों के क्रम के रूप में दर्शाता है (अक्षर, अंक, विराम चिह्न आदि)। स्ट्रिंग पर काम उसके मेथड को कॉल करके किया जाता है।
C++ में स्ट्रिंग टाइप और उससे जुड़े फंक्शन इस्तेमाल करने से पहले स्ट्रिंग लाइब्रेरी से इंक्लूड करने पड़ते हैं। आप अपनी फाइल के सबसे ऊपर #include <string> जोड़कर ऐसा कर सकते हैं। इसके बाद वे std नेमस्पेस में आ जाते हैं। स्ट्रिंग टाइप का पूरा नाम std::string है। स्ट्रिंग लिटरल में डबल कोट अक्षर का उपयोग होता है: ".
#include <string>
std::string w_berry_quote{"A well-made sentence, I think, is a thing of beauty."};
आप स्ट्रिंग जोड़ने के लिए + ऑपरेटर का उपयोग कर सकते हैं:
std::string original_title{"The School of Rock"};
std::string sequel_indicator{"Electric Boogaloo"};
std::string next_movie_title = original_title + " 2: " + sequel_indicator;
स्ट्रिंग लाइब्रेरी इस्तेमाल करने के लिए आपको यह जानना ज़रूरी है कि किसी ऑब्जेक्ट का फंक्शन भी कॉल किया जा सकता है। ऐसे फंक्शन को मेंबर फंक्शन कहा जाता है। सिलेबस में आगे आप मेंबर फंक्शन और उससे जुड़े क्लास कॉन्सेप्ट के बारे में और जानेंगे।
std::string qualification{"awesome"};
// 1st argument: from the index to the end of the string:
std::string who_is_awesome = qualification.substr(5);
// => "me"
// 2nd optional argument for the length:
std::string material{"haunted books"};
std::string ghost = material.substr(8, 3);
// => "boo"
find फंक्शन भी बहुत काम का है। इसे स्ट्रिंग पर एक मेंबर फंक्शन की तरह कॉल किया जाता है और यह आर्गुमेंट के रूप में एक स्ट्रिंग लेता है। find स्ट्रिंग में पहली बार दिखने वाले हिस्से का इंडेक्स लौटाता है, जो 0 से गिना जाता है।
std::string new_release{"apple released a new app!"};
new_release.find("app");
// => 0
new_release.find("e");
// => 4
इस अभ्यास में आप एक लॉग रिपोर्ट की लाइनों पर काम करेंगे।
हर लॉग लाइन एक स्ट्रिंग होती है, जिसका फॉर्मेट कुछ इस तरह होता है: "[<LEVEL>]: <MESSAGE>".
लॉग लेवल तीन तरह के होते हैं:
INFOWARNINGERRORआपके पास तीन काम हैं। हर काम में एक लॉग लाइन दी जाएगी, और आपको उसके साथ कुछ करना होगा।
log_line::message मेथड लागू कीजिए, जो लॉग लाइन का मैसेज लौटाए:
log_line::message("[ERROR]: Invalid operation")
// => "Invalid operation"
log_line::log_level मेथड लागू कीजिए, जो लॉग लाइन का लॉग लेवल लौटाए। यह लेवल बड़े अक्षरों में लौटाया जाना चाहिए:
log_line::log_level("[ERROR]: Invalid operation")
// => "ERROR"
log_line::reformat मेथड लागू कीजिए, जो लॉग लाइन का फॉर्मेट ऐसे बदलता है कि पहले मैसेज आए और उसके बाद कोष्ठकों में लॉग लेवल:
log_line::reformat("[INFO]: Operation completed")
// => "Operation completed (INFO)"
Exercism पर साइन अप कीजिए और C++ को 19 कॉन्सेप्ट100 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।