2010-09-08 19 views
5

, यह आसानी से पात्रों के साथ किया जाता है मैं एक स्ट्रिंग कि UTF-8 वर्ण हैं है, और मैं एक विधि है कि या तो अपर या लोअर केस के लिए हर चरित्र कन्वर्ट करने के लिए माना जाता है की है, परिवर्तित UTF-8 वर्णों जो ASCII के साथ ओवरलैप करता है, और स्पष्ट रूप से कुछ वर्ण परिवर्तित नहीं किए जा सकते हैं, उदाहरण के लिए कोई चीनी चरित्र। हालांकि ऊपरी/निचले, उदा। अन्य वर्णों को पहचानने और बदलने का एक अच्छा तरीका है सभी यूनानी पात्र? कृपया ध्यान दें कि मुझे विंडोज और लिनक्स दोनों पर ऐसा करने में सक्षम होना चाहिए।ऊपरी/लोअर केस सी ++

धन्यवाद,

+0

उपयोगी उत्तर प्राप्त करने के लिए शब्दावली को यहां सही करना महत्वपूर्ण है। यूटीएफ -8 आरएफसी 3629 (और अन्यत्र) में निर्दिष्ट एक वर्ण एन्कोडिंग है; इसमें यूनिकोड वर्णों और ऑक्टेट अनुक्रमों के बीच मैपिंग के लिए एल्गोरिदम शामिल हैं जो उन पात्रों को पोर्टेबल रूप से दर्शाते हैं। कृपया प्रकार के साथ सटीक रहें; इससे भी बेहतर, उस कोड को दिखाएं जिसमें घोषणाएं और प्रकार शामिल हैं। –

+1

ग्रेग अपनी टिप्पणी, खेद मेरे लिए कोई मतलब नहीं है लेकिन मैं यह भी मैं कुछ है कि सही ढंग से तो काम नहीं कर रहा है कि मेरे पास कोई मतलब नहीं है डिबग करने के लिए कोशिश नहीं कर, कुछ करने के लिए कैसे यह पता लगाने की कोशिश कर रहा हूँ अभी तक कोई कोड नहीं है, मुझे पता है कि यूटीएफ -8 एक एन्कोडिंग है, लेकिन वास्तव में वह नहीं बदलता जो मैं प्राप्त करने की कोशिश कर रहा हूं जो "ए" -> "ए" या "Ω" -> "ω" से जाने के माध्यम से विकसित होता है – NSA

+0

उद्देश्य क्या है? क्या आप इस तरह के प्रसंस्कृत तारों की तुलना करने के लिए इसका उपयोग करना चाहते हैं? मुझे लगता है कि आप इस तरह की तुलना के लिए इसका उपयोग करना चाहते हैं। क्या आपको एहसास है कि यह "ß" और "एसएस" जैसी चीजों को जर्मन में समकक्ष नहीं करेगा? – wilx

उत्तर

13

ICU पर एक नज़र डालें।

ध्यान दें कि अपर केस कार्यों के लिए छोटे अक्षर स्थान पर निर्भर हैं। तुर्की (एएससीआई) पत्र I के बारे में सोचें जो "डॉटलेस लोअरकेस i" और (ascii) मुझे मिलता है जो मुझे "डॉट के साथ अपरकेस I" मिलता है।

+0

टिप अलेक्जेंड्रे के लिए धन्यवाद, हालांकि मैं इस एप्लिकेशन के लिए किसी तीसरे पक्ष के libs के खिलाफ जोड़ने से रोक रहा हूं। इसलिए मुझे यह समझने की ज़रूरत है कि उस lib का उपयोग करके इसे कैसे किया जाए। – NSA

+0

मेरा सुझाव है कि आप लिखते हैं कि आप अपना खुद का केस मैपिंग यूटिलिटी रोल करते हैं, http://www.unicode.org/faq/casemap_charprop.html देखें। वहां से आप सभी विशेष केस मैपिंग डाउनलोड कर सकते हैं। – tidwall

+2

सी ++ में कोई यूनिकोड समर्थन नहीं है। आईसीयू * जाने का रास्ता है। –

2

यह मानते हुए कि आप wctype.h के लिए उपयोग किया है, तो एक 2-बाइट यूनिकोड स्ट्रिंग के लिए अपने पाठ को परिवर्तित करने और towupper का उपयोग()। फिर इसे वापस यूटीएफ -8 में परिवर्तित करें।

+1

या आईसीयू का उपयोग अलेक्जेंड्रे के रूप में किया गया है। – tidwall

+1

आप इस तरह जर्मन ß और यूनानी टर्मिनल सिग्मा को संभाल नहीं पाते हैं। –

+0

@Alexandre C .: चाहे ऐसे वर्ण सही ढंग से परिवर्तित हो जाएं या नहीं, वर्तमान लोकेल पर निर्भर करता है। – caf

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