2015-09-15 4 views
6

सी ++ चरित्र अक्षर के क्रम के बारे में क्या गारंटी देता है? क्या मूल स्रोत वर्ण सेट में वर्णों का एक निश्चित क्रम है?सी ++ चरित्र अक्षर के क्रम के बारे में क्या गारंटी देता है?

+0

वास्तव में एक बुराई कार्यान्वयन हो सकता है '' z '==' a '+ 25' और _still_ में' 'b' <'a'' है। मेरा मानना ​​है कि यह ईबीसीडीआईसी और एसएमएस के लिए जिम्मेदार है, यहां तक ​​कि अंडरस्पेसिस्ड है। – MSalters

+1

तथ्य यह है कि कोई गारंटी नहीं है कि कभी-कभी कुछ कार्यान्वयन के लिए अपना समर्थन छूना एक अच्छा विचार है, जो "सबसे अधिक" हो सकता है। मेरी राय में एक अच्छा उदाहरण है क्यूटी उन कार्यान्वयन के लिए चिपक रहा है जिनके पास 'sizeof (int) == 4' है ... सभी कंपाइलर्स वे इसकी गारंटी का समर्थन करना चाहते हैं, लेकिन निश्चित रूप से सभी नहीं, लेकिन यदि आप स्वयं को इस तरह के कार्यान्वयन तक सीमित करते हैं, तो यह जीवन को और अधिक आसान बना सकता है। हालांकि आपको सावधान रहना होगा और उन क्रियान्वयनों को जानना होगा जिन्हें आप चिपके हुए हैं, साथ ही आवेदन पर निर्भर इस तरह की सीमा पर विचार करें। – leemes

उत्तर

10

मानक केवल एक गारंटी 09 को दशमलव अंक के आदेश देने के लिए मसौदे से सी ++ 11 मानक खंड 2.3[lex.charset] प्रदान करता है, (जैसे 'a' < 'z' सच होने की गारंटी? कैसे के बारे में 'A' < 'z'? है):

दोनों स्रोत और निष्पादन बुनियादी वर्ण सेट में, दशमलव अंक के ऊपर की सूची में 0 के बाद हर किरदार एक पिछले के मूल्य से अधिक हो जाएगा का मूल्य।

बुनियादी निष्पादन वर्ण सेट और बुनियादी निष्पादन चौड़े वर्ण सेट प्रत्येक बुनियादी स्रोत वर्ण सेट के सभी सदस्यों को शामिल होगा,:

और अन्यथा (जोर मेरा) का कहना है प्लस नियंत्रण वर्ण चेतावनी का प्रतिनिधित्व करते हैं, बैकस्पेस, और कैरिज रिटर्न, प्लस एक नल कैरेक्टर (क्रमशः शून्य विस्तृत वर्ण), जिसका प्रतिनिधित्व सभी शून्य बिट्स है। प्रत्येक मूल निष्पादन चरित्र सेट के लिए, सदस्यों के मान गैर-नकारात्मक और एक दूसरे से अलग होंगे।

नोट, EBCDIC में एक निरंतर चरित्र सेट है।

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