2012-02-13 29 views

उत्तर

55
  • <string.h>strcpy, strlen सी शैली अशक्त-समाप्त तार के लिए जैसे पुराने कार्यों में शामिल है।
  • <string> मुख्य रूप से std::string, std::wstring और अन्य कक्षाएं शामिल हैं।
+21

यह भी ध्यान दिया जाना चाहिए कि 'string.h' का उपयोग करके C++ में बहिष्कृत किया गया है। यदि आपको भीतर की कार्यक्षमता की आवश्यकता है, तो आपको हेडर 'cstring' का उपयोग करना चाहिए। यह कम या ज्यादा "इन दोनों के बीच क्या अंतर है" के मुद्दे को पूरी तरह से छोड़ देता है क्योंकि यह बहुत स्पष्ट है कि कोई सी पुस्तकालय से है। –

10

string.h सी की हेडर फ़ाइल है जबकि string सी ++ की हेडर फ़ाइल है।

+1

'' सी ++ शीर्ष लेख भी फ़ाइल माना जा सकता है हेरफेर करने के लिए है। :) – iammilind

+0

नहीं! का उपयोग सी ++ के साथ किया जाना है। –

19

string.h एक सी हेडर एक सी ++ हेडर नहीं है, अवधि!

+0

क्या आपका मतलब है कि जब मैं कुछ फाइलें करता हूं .h/.cpp मुझे .h को हटा देना चाहिए या एसडीके फाइलों की तरह, euh के लिए आपका जवाब है? – Valmond

+13

मुझे लगता है कि, दूसरी तरफ कहना बेहतर है: ' सी ++ हेडर है, सी हेडर नहीं। – iammilind

15

<string.h> cstring है - http://www.cplusplus.com/reference/clibrary/cstring/

<string> C++ स्ट्रिंग वर्ग है - http://www.cplusplus.com/reference/string/

प्रति नीचे निकोल Bolas टिप्पणी संपादित करें और googling के एक बिट:

<cstring> आमतौर पर <string.h> रूप में एक ही बातें आयात करेगा लेकिन std नामस्थान में। <string.h> आमतौर पर सब कुछ वैश्विक नामस्थान में आयात करेगा। ऐसा लगता है कि आप मेरे गुगलिंग के अनुसार लाइब्रेरी कार्यान्वयन पर निर्भर हैं।

व्यक्तिगत रूप से मैं केवल <cstring> का उपयोग करता हूं यदि मुझे सी स्टाइल स्ट्रिंग हेल्पर्स की आवश्यकता है।

+2

' '' 'के लिए समानार्थी नहीं है। 'cstring'' std' नेमस्पेस में सामान डालता है (यह उन्हें 'std' नेमस्पेस के बाहर भी छोड़ सकता है), जबकि '' नहीं है। –

+1

सी शैली का उपयोग 'एच' हेडर को सी ++ में बहिष्कृत किया गया है। –

+0

@PrasoonSaurav को बहिष्कृत करने के लिए इसे शुरू करने के लिए मानक का हिस्सा होना होगा, जो कभी नहीं था। –

8

<string.h> में सी-लाइब्रेरी स्ट्रिंग फ़ंक्शन शामिल हैं। strlen, strcmp, आदि

<string>std::basic_string के लिए परिभाषा है, जो typedefs std::string और std::wstring है शामिल हैं। यह अंतर है।

वास्तव में उनके पास कोई संबंध नहीं है, इस तथ्य के बाहर कि वे दोनों तारों से निपटते हैं।

2

मेरा मानना ​​है कि <string.h> बस और <string> सी के लिए C++ के लिए प्रयोग किया जाता है। तो string.h काम नहीं करेगा।

2

के रूप में कहा गया है, string.h और cstring सी हेडर कर रहे हैं, (जबकि cstring मूल रूप से एक सी ++ string.h के लिए आवरण है) जो char[]'\0' द्वारा समाप्त कर रहे हैं सी तार के लिए काम करता है, से युक्त। आप सी ++ वर्ग स्ट्रिंग का उपयोग करना चाहते हैं, जो हेडर <string> है।

5

वे पूरी तरह से अलग शीर्षलेख हैं।

<string> सी ++ string वर्ग

<string.h> or <cstring> कार्यों को परिभाषित करता है सी तार और सरणियों

संबंधित मुद्दे