खोज…


टिप्पणियों

C ++ भाषा किसी भी वर्ण-समूह को निर्धारित नहीं करती है, कुछ संकलक UTF-8 या UTF-16 के उपयोग का समर्थन कर सकते हैं। हालांकि इस बात की कोई निश्चितता नहीं है कि सरल एएनएसआई / एएससीआईआई पात्रों से परे कुछ भी प्रदान किया जाएगा।

इस प्रकार सभी अंतर्राष्ट्रीय भाषा समर्थन परिभाषित है, जो आपके द्वारा उपयोग किए जा रहे प्लेटफॉर्म, ऑपरेटिंग सिस्टम और कंपाइलर पर निर्भर है।

कई तृतीय पक्ष पुस्तकालय (जैसे कि अंतर्राष्ट्रीय यूनिकोड समिति पुस्तकालय) का उपयोग मंच के अंतर्राष्ट्रीय समर्थन को बढ़ाने के लिए किया जा सकता है।

C ++ स्ट्रिंग विशेषताओं को समझना

#include <iostream>
#include <string>

int main()
{
    const char * C_String = "This is a line of text w";
    const char * C_Problem_String = "This is a line of text ኚ";
    std::string Std_String("This is a second line of text w");
    std::string Std_Problem_String("This is a second line of ϯϵxϯ ኚ");

    std::cout << "String Length: " << Std_String.length() << '\n';
    std::cout << "String Length: " << Std_Problem_String.length() << '\n';

    std::cout << "CString Length: " << strlen(C_String) << '\n';
    std::cout << "CString Length: " << strlen(C_Problem_String) << '\n';
    return 0;
}

प्लेटफ़ॉर्म (विंडोज़, OSX, आदि) और कंपाइलर (GCC, MSVC, आदि) के आधार पर, यह प्रोग्राम विभिन्न मूल्यों को संकलित करने, प्रदर्शित करने या समान मान प्रदर्शित करने में विफल हो सकता है

Microsoft MSVC कंपाइलर के तहत उदाहरण आउटपुट:

स्ट्रिंग की लंबाई: 31
स्ट्रिंग की लंबाई: 31
CString लंबाई: 24
CString लंबाई: 24

इससे पता चलता है कि MSVC के तहत उपयोग किए गए प्रत्येक विस्तारित-वर्ण को एक "वर्ण" माना जाता है, और यह प्लेटफ़ॉर्म अंतर्राष्ट्रीय भाषाओं का पूर्ण समर्थन करता है।
हालांकि यह ध्यान दिया जाना चाहिए कि यह व्यवहार असामान्य है, इन अंतरराष्ट्रीय पात्रों को यूनिकोड के रूप में आंतरिक रूप से संग्रहीत किया जाता है और इस प्रकार वास्तव में कई बाइट्स लंबे होते हैं। इससे अनपेक्षित त्रुटियां हो सकती हैं

GNC / GCC कंपाइलर के तहत प्रोग्राम आउटपुट है:

स्ट्रिंग की लंबाई: 31
स्ट्रिंग की लंबाई: 36
CString लंबाई: 24
सीएसट्रिंग लंबाई: 26

यह उदाहरण प्रदर्शित करता है कि इस (लिनक्स) प्लेटफॉर्म पर उपयोग किए जाने वाले जीसीसी संकलक इन विस्तारित-वर्णों का समर्थन करते हैं, यह एक व्यक्ति के चरित्र को संग्रहीत करने के लिए कई बाइट्स का भी ( सही ढंग से) उपयोग करता है।
इस मामले में यूनिकोड वर्णों का उपयोग संभव है, लेकिन प्रोग्रामर को यह याद रखने में बहुत सावधानी बरतनी चाहिए कि इस परिदृश्य में "स्ट्रिंग" की लंबाई बाइट्स में लंबाई है, पठनीय पात्रों में लंबाई नहीं।

ये अंतर इस कारण से हैं कि अंतर्राष्ट्रीय भाषाओं को प्रति-प्लेटफ़ॉर्म के आधार पर कैसे संभाला जाता है - और इससे भी महत्वपूर्ण बात यह है कि इस उदाहरण में प्रयुक्त C और C ++ स्ट्रिंग को बाइट्स की एक सरणी माना जा सकता है, जैसे कि (इस उपयोग के लिए) C ++ भाषा को मानता है एक चरित्र (चार) एक एकल बाइट होने के लिए



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow