2008-10-26 18 views
6

एक answer to one of my questions में कोड की निम्न पंक्ति शामिल है:Std :: safe_string क्या है?

label = std::safe_string(name); // label is a std::string 

इरादा स्ट्रिंग अक्षर के चारों ओर एक रैपर होने लगता है (इसलिए संभवतः कोई आवंटन नहीं होता है)। मैंने safe_string के बारे में कभी नहीं सुना है और न तो जाहिर है, google है (न ही मुझे इसे 98 मानक में मिल सकता है)।

क्या किसी को पता है कि यह किस बारे में है?

उत्तर

8

google code search खोज (मैं इस के पहले सोचा जाना चाहिए था ...) मैं इस पाया करने के बाद:

//tools-cgi.cpp 
string safe_string (const char * s) 
{ 
    return (s != NULL) ? s : ""; 
} 

कौन सा शून्य लम्बाई तार करने के लिए NULL रों बदल देता है। यद्यपि यह मानक नहीं है, यह शायद एक विशिष्ट एसटीएल कार्यान्वयन में कुछ प्रकार का विस्तार है जिसे उत्तर में संदर्भित किया गया था।

5

कोई मानक safe_string नहीं है के रूप में std::safe_string

6

जैसी कोई चीज नहीं है। उस उत्तरदाता की प्रतिक्रिया में आप जो सुरक्षित_स्ट्रिंग देख रहे हैं वह एक निजी एसटीएल एक्सटेंशन उपयोगिता लाइब्रेरी की तरह दिखता है।

Google for "stlext/stringext.h" और आपको एक ही मंच पर एक पोस्ट में संदर्भित एक ही लाइब्रेरी दिखाई देगी।

+0

आपकी खोज के परिणामों में "safe_string" शामिल नहीं है। – Motti

0

यह सी ++ मानक (लेकिन शायद यह होना चाहिए?)

मैं किया गया है सहायक समारोह का एक ही तरह का उपयोग कर एक std :: स्ट्रिंग एक शून्य चार * तार के साथ एक अपवाद फेंक से बचने के लिए का हिस्सा नहीं है।

// defined somewhere else as "" 
extern const char * const g_strEmptyString ; 

inline const char * safe_string(const char * p) 
{ 
    return (p) ? (p) : (g_strEmptyString) ; 
} 

कोई भूमि के ऊपर, और एक एसटीडी का कोई दुर्घटना :: स्ट्रिंग जब मैं यह एक चार * स्ट्रिंग है जो शून्य हो सकता है फ़ीड लेकिन यह है कि, कि विशेष मामले में, एक के रूप में व्यवहार करना चाहिए: लेकिन इस तरह की और कुछ था खाली स्ट्रिंग।

+0

आपको g_strEmptyString की आवश्यकता क्यों है, यह चाल नहीं करता है। – Motti

+0

"1 का प्रयोग 1 बाइट शाब्दिक वस्तु बनाता है। यदि संकलक स्मार्ट नहीं है तो प्रत्येक एक अलग है और इस प्रकार कोड को संभावित रूप से फूट सकता है। मुझे संदेह होगा कि संकलक इसे दूर करने के लिए पर्याप्त स्मार्ट है और इस प्रकार यह एक झूठा लाभ है और कोड को जटिल करता है। –

+1

मैं स्थानीय ऑब्जेक्ट्स को वापस करने वाले पॉइंटर्स या संदर्भों के विचार से असहज हूं, भले ही कंपाइलर को प्रत्येक मामले को सही तरीके से संभालने के लिए माना जा सके (और वापसी को "" बचाएं)। – paercebal

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