项目中,我需不需要预先考虑对Unicode的支持?

code-artist 2008-02-21 05:29:45
在windows C/C++ 编程中,提倡用头文件<tchar.h>,_T(),_t等等为以后支持Unicode。
可是C++标准中,一般都用char,std::string等等,而wchar_t,std::wstring很少提及,
也没有像tchar.h的这样的头文件提供转换。很多的第三方库都直接用ansi char.
STD C++ 为什么不像windows api那样做?
我在实际项目中该怎么做?


...全文
168 17 打赏 收藏 举报
写回复
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
sheenl 2008-02-25
  • 打赏
  • 举报
回复
最好是自己define一个变量 CHAR_T, 移植的时候改个define就好了。
mLee79 2008-02-25
  • 打赏
  • 举报
回复
还是用 UTF-8 比较舒服 ...
mathe 2008-02-25
  • 打赏
  • 举报
回复
用wchar_t有利也有弊,比如以后你想要将代码移植到Linux上面,就麻烦了
sheenl 2008-02-25
  • 打赏
  • 举报
回复
还有随便请教一下,一般用wchar_t和wstring哪个好?
==================================================
wstring 就是basic_string<wchar_t>
晨星 2008-02-25
  • 打赏
  • 举报
回复
嗯,遗留代码确实是个问题。
所以,偶现在是在身体力行,至少不让偶身后的程序员郁闷,嘿嘿。
Oversense 2008-02-22
  • 打赏
  • 举报
回复
linux 下一般用utf-8 所以也可以用 std::string

win32下一般用 wchar_t, 所以啊,做个多语言,容易不?不容易哈
code-artist 2008-02-22
  • 打赏
  • 举报
回复
steedhorse 晨星 高见。
但是有一个问题:就是以前的程序库一般都是char,string,和C++书籍对stl库介绍一般只提到char,string.如果调用人家的库必须都得先wchar_t to char转换.唉,只有希望大家以后都用Unicode编程了(这似乎很难改变)。
还有随便请教一下,一般用wchar_t和wstring哪个好?
晨星 2008-02-22
  • 打赏
  • 举报
回复
微软在VC2003之前,新建工程默认都使用多字节字符,但从VC2005之后。默认就给置成使用Unicode字符集了。
可见微软的态度也发生了变化,个人觉得大多数情况下,确实没必要考虑非Unicode应用了。
人家Java程序员更爽,没的选择,Java里的char和java.lang.String从一开始就是在编译器和规范中都写死了的,只支持Unicode。
晨星 2008-02-22
  • 打赏
  • 举报
回复
偶个人通常不用Windows的_t系列。相反,偶觉得新项目基本上已经没有必要再同时支持Unicode和非Unicode,只支持Unicode就OK了,所以偶基本不用char和标准库的string,而是一律使用wchar_t和wstring。
另外,自己也写了两个函数,在万不得已的时候进行转换。
icosagon 2008-02-22
  • 打赏
  • 举报
回复
windows下标准c才有两套吧
icosagon 2008-02-22
  • 打赏
  • 举报
回复
支持多个语言容易,但又要多个语言又要跨平台就不容易了,光是Linux就烦,它的默认locale可以被任意修改
code-artist 2008-02-22
  • 打赏
  • 举报
回复
可是如果用STL,没有中间形式,我们一般都用std::string,char,而不是用st::wstring,wchar_t.
面对STL,该如何使用Unicode呢??
Chappell 2008-02-22
  • 打赏
  • 举报
回复

#ifdef UNICODE
typedef WCHAR TCHAR
#else
typedef char TCHAR
#endif

觉得应该用如TCHAR类型的写法,设置开关比较简单。
  • 打赏
  • 举报
回复
标准C有两套 一种是针对unicode

所以使用中间形式进行编码是 最好.
hong8292 2008-02-21
  • 打赏
  • 举报
回复
一定要,虽然麻烦了点,你可以稍微做点工作,包装一层,或许其它的方法。
linux_328 2008-02-21
  • 打赏
  • 举报
回复
要,现在的Widnows都采用Unicode了,即使提供了ANSI版本的API,但在内部,还是转换为Unicode处理的,除非你的操作系统是98,95的。
而且Unicode对你将来支持国际化也很有用。
healer_kx 2008-02-21
  • 打赏
  • 举报
回复
要,一定要,理论上,这是需求的一部分。
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-02-21 05:29
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下