在Windows上使用c++将希伯来字符串放入变量中
Putting Hebrew string in a variable using C++ on Windows
我有问题把希伯来字符串在这样的变量:
wchar_t* hebrewString = L"א";
的unicode值是十六进制的0x05d0
或十二月制的1488
问题是我的记忆显示完全不连接的不同值到的实值。
如果我写:
wchar_t hebrewChar = 0x05d0
很明显,正确的值将在hebrewChar
中,但我想写常规字符串。
我想也许我做错了什么,所以我在生成ASM代码中查找,即使在那里它的值也是错误的。
我如何写希伯来字符串在一个简单的方式?
编辑1:
添加源代码(在注释上面的代码是程序集)
wchar_t d = 0x05D0;
// DB 0f3H, 05H, 090H, 00H, 00H, 00H
wchar_t *test = L"א";
// mov eax, 1523 ; 000005f3H
wchar_t test1 = L'א';
// mov eax, -112 ; ffffff90H
char test2 = 'א';
通过在字符串或Unicode字符前指定L,编译器将其转换为与所保存的编码文件相匹配的编码。因此,您必须通过 file -> Advance Save Options和更改文件编码,例如选择带有签名- codepage 65001的UTF 8 。
还要记住,Windows控制台不能打印所有的Unicode字符(如果你有不同的默认语言和编码,你可以)。
这里还有一个例子,通过将字符保存到文本文件中来查看代码是否正常工作:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
// UCS-2 little endian text file magic number
char magic_number[] = { 0xFF, 0xFE };
wchar_t unicode_char = L'א';
wchar_t unicode_val = 0x05d0;
if (unicode_char == unicode_val)
cout << "Works!" << endl;
ofstream f("out.txt", ios::out);
f.write(magic_number, 2);
f.write((char *)&unicode_char, 2);
f.close();
return 0;
}
打开文件,检查输出值是否正确。否则,为了在代码中存储非ANSI字符,我强烈建议使用像ICU这样的库来保存、加载……-一般所有关于字符串的操作
相关文章:
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 从字符串变量中逐字符读取单词
- 对函数 PlaySound 使用字符串变量
- C++中的字符串变量
- 字符串变量,比如说"字符串str",可以直接复制到数组中吗?
- 我可以用字符串变量而不是它的名字创建容器吗? C++
- 字符串变量的大小
- 为什么我的字符串变量没有打印完整的字符串?
- 字符串变量未更新 c++
- 如何使用 setfill 和 setw 在字符串变量中存储十六进制值
- 在.cpp文件之间传递全局字符串变量?
- 字符串变量顺序
- 为什么可以将整数分配给字符串变量?
- 在qt创建器中调试时如何访问字符串变量的完整值?
- 将字符串变量分配给无符号字符变量
- 在 c++ 中使用字符串变量选择静态类结构,而不带对象
- C++我应该用什么来保存格式化为字符串变量(如sprintf())的文件
- 我有一个字符串变量单词= "APA"
- 将字符串变量从 bash 脚本传递到根宏