std::u16string
및 std::u32string
을 C++ 11에서 보았지만 기쁩니다. 왜 UTF-8을 처리 할 std::u8string
이 없는지. 나는 std::string
이 UTF-8을 대상으로한다는 인상을 받고 있지만 잘하지 못하는 것 같습니다. 무슨 뜻입니까? std::string.length()
은 여전히 문자열의 문자 수가 아닌 문자열의 버퍼 크기를 반환하지 않습니까?std :: u16string, std :: u32string, std :: string, length(), size(), 코드 포인트 및 문자
그렇다면 새로운 C++ 11 클래스에 대해 표준 문자열을 정의한 방법은 무엇입니까? 문자열의 버퍼 크기, 코드 포인트 수 또는 문자 수를 반환합니까 (대리 코드 쌍은 2 코드 포인트이지만 한 문자 만 가정하십시오. 제가 틀렸다면 수정하십시오)?
그리고 약 size()
; 그것은 length()
과 같지 않습니까? 내 혼란의 근원을 알려면 http://en.cppreference.com/w/cpp/string/basic_string/length을 참조하십시오.
그래서, 내 생각, 내 근본적인 문제는 하나 개의 사용 std::string
, std::u16string
을 수행하고, std::u32string
제대로 버퍼 크기, 코드 포인트의 수, 문자 수를 구별하는 방법이다? 표준 반복기를 사용하는 경우 바이트, 코드 포인트 또는 문자를 반복하고 있습니까?
utf8에서'std :: string'은 utf8에서 utf8과 마찬가지로 작동합니다. utf16에서는 해당 유형의 요소를 처리하며 두 개 이상의 요소 시퀀스로 표현되는 문자는 처리하지 않습니다. –
여기로 이동 : http://utf8everywhere.org/#myth.strlen –