cout<<如何输出UNICODE?

jyg8888 2005-12-02 03:09:41
可以吗
========================================================
维护单一原始码


当然,使用Unicode也有缺点。第一点也是最主要的一点是,程序中的每个字符串都将占用两倍的储存空间。此外,您将发现宽字符执行时期链接库中的函数比常规的函数大。出于这个原因,您也许想建立两个版本的程序-一个处理ASCII字符串,另一个处理Unicode字符串。最好的解决办法是维护既能按ASCII编译又能按Unicode编译的单一原始码文件。

虽然只是一小段程序,但由于执行时期链接库函数有不同的名称,您也要定义不同的字符,这将在处理前面有L的字符串文字时遇到麻烦。

一个办法是使用Microsoft Visual C++包含的TCHAR.H表头文件。该表头文件不是ANSI C标准的一部分,因此那里定义的每个函数和宏定义的前面都有一条底线。TCHAR.H为需要字符串参数的标准执行时期链接库函数提供了一系列的替代名称(例如,_tprintf和_tcslen)。有时这些名称也称为「通用」函数名称,因为它们既可以指向函数的Unicode版也可以指向非Unicode版。

如果定义了名为_UNICODE的标识符,并且程序中包含了TCHAR.H表头文件,那么_tcslen就定义为wcslen:
=======================================摘自WINDOWS编程


上面讲的什么意思呀
...全文
1146 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
baickl 2005-12-17
  • 打赏
  • 举报
回复
即使使用了wcout也显示不了中文的.但是显示英文可以.
DrSmart 2005-12-02
  • 打赏
  • 举报
回复
恩,在stl中一般原函数加上一个w,就是宽字节的函数了
SammyLan 2005-12-02
  • 打赏
  • 举报
回复
要输出unicod就用wcout吧
顺便setlocal
antter 2005-12-02
  • 打赏
  • 举报
回复
上面的意思是
比如MessageBox
当你是定义了unicode时,,call MessageBoxW
否则 call MessageBoxA
antter 2005-12-02
  • 打赏
  • 举报
回复
用wcout代替cout
用wstring代替string
.
.
.
jsjjms 2005-12-02
  • 打赏
  • 举报
回复
你可以重载一个cout函数呀。
普通的cout遇到结束符就不会再输出了.
而unicode里字符都是一个字符接一个'\0'
dragonzxh 2005-12-02
  • 打赏
  • 举报
回复
类似的,_T即TEXT()也一样,如果定义了_Unicode,则把字符串存储为Unicode版本,即加上L不然的话按照各自的规律来处理,有可能不做处理,如char,也可能做其他处理,如某些Atl用到的数据类型
dragonzxh 2005-12-02
  • 打赏
  • 举报
回复
TCHAR就好像模板tamplate<typename T>
如果有#define _Unicode
则TCHAR 就定义为wchar_t,不同系统可能定义为char,或者其他类型
相应的函数_tcslen也会调用相应版本。如_wcslen或者strlen等等

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧