शीर्षक to_string यह सब कहते हैं वास्तव में। उन्होंनेक्यों एसटीडी के लिए कोई std :: स्ट्रिंग अधिभार ::
namespace std
{
std::string to_string(const std::string&)
}
अधिभार क्यों नहीं चुना?
मेरे पास एक ऐसा प्रोग्राम है जो पंक्ति अनुक्रमणिका या पंक्ति नाम से कुछ डेटा पूछ सकता है; टेम्पलेट्स के लिए आदर्श। जब तक मैं अगर एक पंक्ति एक्सेस किए जा रहे एक त्रुटि संदेश का निर्माण करने की कोशिश याद आ रही है:
template <typename T>
int read(T nameOrIndex)
{
if (!present(nameOrIndex))
{
// This does not compile if T is std::string.
throw std::invalid_argument("Missing row: " + std::to_string(nameOrIndex));
}
}
मैं std
नाम स्थान के लिए अपने ही अधिभार जोड़ सकता है लेकिन यह है कि आदर्श नहीं है।
यह शायद सिर्फ निरीक्षण की वजह से याद आ रही है। –
यदि आपका नाम अन्य प्रकारों की संख्या भी है तो आपका कोड संकलित नहीं होगा। उन सभी के बारे में क्या? क्या 'to_string' कार्यान्वयन होना चाहिए जो मनमानी प्रकारों के लिए कुछ स्ट्रिंग देता है? 'Std' (जो अवैध है) में' to_string' अधिभार जोड़ने के बजाय, मैं उसी नामस्थान में 'read'' के रूप में अपना स्वयं का 'to_string' ओवरलोड बनाउंगा। उस से 'std :: to_string' पर प्रतिनिधि, और ओवरलोड से है कि तर्क को वापस करें जो' std :: string const & 'लेता है। – Praetorian
'std :: to_string' अंतर्निहित संख्यात्मक प्रकार तारों में परिवर्तित करता है। तारों को तारों में "रूपांतरित" करने की कोई आवश्यकता नहीं है क्योंकि वे पहले से ही तार हैं। –