/ / C ++ 11 के साथ, क्या मुझे अभी भी यूनिकोड पाठ के लिए एक गैर-मानक स्ट्रिंग हेरफेर लाइब्रेरी की आवश्यकता है? - सी ++, यूनिकोड, सी ++ 11

सी ++ 11 के साथ, क्या मुझे अभी भी यूनिकोड टेक्स्ट के लिए एक गैर-मानक स्ट्रिंग मैनिपुलेशन लाइब्रेरी चाहिए? - सी ++, यूनिकोड, सी ++ 11

मैंने "std की लंबाई विधि पर ध्यान दिया है: स्ट्रिंग बाइट्स में लंबाई लौटाती है और std में समान विधि :: u16string 2-बाइट क्रमों की संख्या देता है।

मैंने यह भी देखा कि जब कोई वर्ण या कोड बिंदु BMP के बाहर होता है, तो लंबाई 2 के बजाय 4 लौटती है।

इसके अलावा, यूनिकोड भागने का क्रम अनावश्यक तक ही सीमित है, इसलिए यू + एफएफएफएफ के ऊपर कोई भी कोड बिंदु एक एस्केप अनुक्रम द्वारा नहीं डाला जा सकता है।

दूसरे शब्दों में, बीएमपी के बाहर सरोगेट जोड़े या कोड बिंदुओं के लिए समर्थन नहीं दिखता है।

यह देखते हुए, गैर-मानक स्ट्रिंग हेरफेर लाइब्रेरी का उपयोग करने के लिए स्वीकृत या अनुशंसित अभ्यास है जो utf-8, UTF-16, सरोगेट जोड़े और इतने पर समझता है?

क्या मेरी विवशता में बग है या क्या मैं मानक स्ट्रिंग हेरफेर विधियों का गलत तरीके से उपयोग कर रहा हूं?

उदाहरण:

/*
* Example with the Unicode code points U+0041, U+4061, U+10196 and U+10197
*/

#include <iostream>
#include <string>

int main(int argc, char* argv[])
{
std::string example1 = u8"A䁡