繁体   English   中英

如何获取特定WCHAR字符的代码点?

[英]How to get codepoint of particular WCHAR character?

例如,我在这里需要第5个字符的codepoint ,即ð

const WCHAR* mystring = L"Þátíð";

我知道它的代码点为: U+00F0但是如何使用c ++获取此整数?

Windows 2000及更高版本中的WCHAR为UTF-16LE,因此按索引访问字符串中的特定字符不一定安全。 您应该使用CharNext之类的东西来遍历字符串,以正确处理代理对并组合字符/变音符号。

在此特定示例中,Forgottn的答案取决于编译器发出áí字符的预组合版本...(这对于大多数Windows编译器而言可能都是正确的,移植到Mac OS可能会出现问题)

const WCHAR myString[] = L"Þátíð";
size_t myStringLength = 0;
if(SUCCEEDED(StringCchLengthW(myString, STRSAFE_MAX_CCH, &myStringLength))
{
    LPCWSTR myStringIterator = myString;
    for(size_t sz = 0; sz < myStringLength; ++sz)
    {
        unsigned int mySuperSecretUnicodeCharacter = *myStringIterator;
        LPCWSTR myNextIterator = CharNext(myStringIterator);
        std::vector<unsigned int> diacriticsOfMySuperSecretUnicodeCharacter(myStringIterator+1, myNextIterator);
        myStringIterator = myNextIterator;
    }
}

编辑1:使它实际工作

编辑2:使其实际上寻找所有代码点

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM