2014-10-12 157 views
1

考虑到该字母的UTF-16较低的2字节存储在unsigned short变量中,我希望将一个孟加拉语字母打印到控制台。C++:将unsigned short变量的值打印为unicode字符

例如,对于信(参考:

的Unicode值是 - 0985(十六进制)

我有,unsigned short unicodeChar = 0x0985;

现在,我怎么能打印这封信使用unicodeChar的值?

说明:我试过了这个 - cout << "\u0985";,它正确打印

但我希望能够打印由变量unicodeChar

+0

使用的wchar_t,而不是无符号短。 – 2014-10-12 12:56:47

+0

我从二进制文件中读取这个短值。我试过这样做 - wchar_t wC = unicodeChar; cout << wC; 这打印unicodeChar的整数值 – crysoberil 2014-10-12 13:04:03

回答

1

尝试为代表的使用为const char *存储值的字符。

#include <iostream> 

using namespace std; 
int main() 
{ 
    const char* uC = "\u0985"; 
    cout << uC << endl; 
} 

如果你想使用无符号短的值,可以使用setlocale%lc打印:

#include <stdio.h> 
#include <locale.h> 
int main() 
{ 
    if (!setlocale(LC_CTYPE, "")) 
    { 
     fprintf(stderr, "Error:Please check LANG, LC_CTYPE, LC_ALL.\n"); 
     return 1; 
    } 

    unsigned short unicodeChar = 0x0985; 
    printf ("%lc\n",unicodeChar); 
} 
+0

'unicodeChar'应该是一个变量。其实,我从二进制文件中读取这个变量。之后,我必须根据它的价值打印一个角色。 – crysoberil 2014-10-12 12:56:09

+0

如何使用setlocale()? – 2014-10-12 14:19:13

+0

非常感谢。这似乎解决了这个问题! – crysoberil 2014-10-12 15:09:24