例如我codepoint
这里需要第 5 个字符,即ð
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:让它实际查找所有代码点