std:: c++ में स्ट्रिंग बनाम स्ट्रिंग




string (4)

जब तक पहले से ही कहा गया अन्य उत्तर, std:: का उपयोग करना आवश्यक है जब तक कि आप या तो पूरे std नाम स्थान या std::string (नीचे देखें) का आयात नहीं करते हैं।

मेरी राय में यह std::string बजाय std::string का उपयोग करने के लिए अच्छा है क्योंकि यह दिखाता है कि यह एक std::string और कुछ अन्य स्ट्रिंग कार्यान्वयन नहीं है।

यदि आप केवल string लिखना पसंद करते हैं, तो मैं आपको using std::string; का using std::string; करने का सुझाव using std::string; using namespace std; का using namespace std; करने के बजाय using namespace std; केवल वैश्विक नेमस्पेस में उन चीजों को आयात करने के लिए जिनकी आपको वास्तव में आवश्यकता है।

संभव डुप्लिकेट:
'नाम स्थान std का उपयोग क्यों कर रहा है?' C ++ में एक बुरा अभ्यास माना जाता है?
Std Namespace का उपयोग करना

Ive विभिन्न मंचों के एक समूह के आसपास मंडरा रहा है और मुझे लगता है कि यह पॉप हर बार और फिर से दिखाई देता है। यह एक बहुत शुरुआती सवाल है।

मैं आमतौर पर एक कार्यक्रम के साथ परिभाषित करता हूं

#include<string>
using namespace std;

string x;

मुझे वहां कोड नमूनों का एक गुच्छा दिखाई देता है जो एक स्ट्रिंग को परिभाषित करते हैं

std::string.

इसका उद्देश्य क्या है? क्या यह अच्छा अभ्यास है या इसकी कुछ कार्यक्षमता है?


जैसा कि ssteinberg ने कहा कि यह समान है। लेकिन केवल वाक्यात्मक रूप से।

मेरे अनुभव से, या तो पूर्ण नाम का उपयोग करना अधिक उपयोगी है

std::string 

जहाँ भी आपको इसकी आवश्यकता हो, या स्पष्ट जोड़ें

using std::string;

अपने स्रोत फ़ाइल की शुरुआत में।

लाभ यह है कि इस तरह से आपके स्रोत फ़ाइल की निर्भरता अधिक अवलोकन योग्य है। यदि आप जोड़ते हैं

using namespace std;

इसका मतलब है कि आपका कोड उस नाम स्थान के भीतर किसी भी चीज़ पर निर्भर हो सकता है।


यदि वे namespace std using नहीं using रहे हैं, तो उन्हें निर्दिष्ट करना होगा कि std::string का उपयोग करके क्या नाम स्थान स्ट्रिंग से संबंधित हैं


string का पूरा नाम std::string क्योंकि यह namespace std , नेमस्पेस जिसमें सभी C ++ मानक लाइब्रेरी फ़ंक्शंस, क्लासेस और ऑब्जेक्ट्स में रहते हैं।

अपने कोड में, आपने स्पष्ट रूप से using namespace std; लाइन जोड़ी है using namespace std; , जो आपको मानक नामस्थान से std:: उपसर्ग का उपयोग किए बिना कुछ भी उपयोग करने देता है। इस प्रकार आप std::string (स्ट्रिंग प्रकार का वास्तविक नाम) का उपयोग शॉर्टहैंड string से कर सकते हैं क्योंकि कंपाइलर इसके लिए namespace std में देखना जानता है।

string और std::string बीच कोई कार्यक्षमता अंतर नहीं है क्योंकि वे एक ही प्रकार के हैं। उस ने कहा, ऐसे समय हैं जहाँ आप std::string over string पसंद करेंगे। उदाहरण के लिए, हेडर फ़ाइल में, आम तौर पर using namespace std; लाइन लगाने के लिए एक अच्छा विचार नहीं माना जाता है using namespace std; (या किसी भी नामस्थान का उपयोग करने के लिए, उस बात के लिए) क्योंकि यह उन फ़ाइलों में नाम पैदा कर सकता है जिनमें उस हेडर को अस्पष्ट बनाना शामिल है। इस सेटअप में, आप हेडर में सिर्फ #include <string> का उपयोग करेंगे, फिर स्ट्रिंग प्रकार को संदर्भित करने के लिए std::string का उपयोग करेंगे। इसी तरह, अगर कभी std::string और कुछ अन्य string type के बीच कोई अस्पष्टता होती है, तो std::string नाम का उपयोग करके std::string अस्पष्टता को हटा देती है।

using namespace std; लाइन शामिल करें या नहीं using namespace std; सब कुछ एक प्रतियोगिता का विषय है और कई प्रोग्रामर दृढ़ता से इसके खिलाफ या दृढ़ता से हैं। मेरा सुझाव है कि किसी भी प्रोजेक्ट पर काम करते समय जो भी कोडिंग कन्वेंशन का उपयोग किया जाता है उसे अपनाने के लिए आप जो भी सहज हों और उपयोग करना सुनिश्चित करें।





std