如何获取特定 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:使其实际查找所有代码点
相关文章:
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 字符串-C++后显示的随机字符
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 如何在C++中从字符串中分割字符
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 指向指向字符数组的指针数组的指针
- 如何用转义符替换字符串中的所有特殊字符
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 比较字符数组
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 无法将参数 1 从 WCHAR 转换为常量字符 *
- 无法使用 swprintf 在 WCHAR* 中打印字符*
- 将字符从 fget 转换为 Wchar*
- 如何获取特定 WCHAR 字符的代码点
- "strcpy":无法将参数 2 从"WCHAR *"转换为"常量字符 *
- wchar /字符变量