[英]How to check range of unicode value of character in c++
我是C ++的新手,来自非CS背景。 因此,如果这个问题很愚蠢或以前得到回答,请原谅我。
我在c ++中有一个字符串,语言是泰卢固语。
std::string str = "ఉంది"; // (it means exists; pronounced as Vundi)
std::string substring = str.substr(0,3);
上面的子串将是“ఉ”(发音为Vu),其unicode十六进制值为0C09。
如何从子字符串中获取值0C09? 目的是检查子串是否在Telugu(0C00-0C7F)的有效范围内。
我已经看到了他们应用于obj-c,java,php,c#等的其他问题。我正在寻找使用std :: string的c ++。
根据评论,我已经阅读了joelonsoftware.com/articles/Unicode.html上的文章。
让我用更多信息更新我的问题。 我使用的是Fedora 19 x86_64,编码是UTF-8。 控制台能够正确显示文本。
根据文章,如果我理解正确ASCII是单字节字符,unicode是多字节字符。 上面的代码示例反映了这里,每个unicode字符的长度为3个字节。 除了讨论UTF-8 /文本编码和多字节字符之外,本文没有提供检测unicode字符串语言的实际帮助。
也许我应该重新解释我的问题:
如何在C ++中检测unicode字符串的语言?
在此先感谢您的帮助。
使用字符串我得到的结果是
std::string str = "ఉంది"; // (it means exists; pronounced as Vundi)
unsigned short i =str[0];
printf("%x %d",i,i);
输出是“ffeo 65504”
但是当我使用wstring ie时
std::wstring str = L"ఉంది"; // (it means exists; pronounced as Vundi)
unsigned short i =str[0];
printf("%x %d",i,i);
输出是“c09 3081” ,我认为是正确的输出。 我不确定,但那就是你想要的。让我知道
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.