书上说 : “如果定义了名为_UNICODE的标识符,并且程序中包含了TCHAR.H表头文件,那么_tcslen就定义为wcslen:”这类的东西说了很多,但是还是不明白怎样定义 _UNICODE 啊?还有就是有时候是 _UNICODE 有时候又是 UNICODE 各位帮我看看~先谢谢啦~
解决方案 »
- 窗口句柄与实例句柄的区别!!
- richedit文字格式设置
- VC,以UDP协议发送到本机端口,为什么本机接收不到?急!!!
- #include <vector> vs2005
- ***********PlatForm SDK************
- 求助C++编译老是有个错误
- **用mixer API控制系统音量的问题**
- 急啊!在线等。怎么从进程,得到文件的所在的目录名。
- 数据库连接路径问题?高分求教!
- 用人用过 IAMStreamConfig吗? 为什么我不能设置视频的ColorSpace为RGB呢? 只有YUY2.请高手指教! 200分
- 我要编写个 FTP客户端软件,用标准C,在ARM上实现,谁能给我写个列子
- vs2005操作怎么这么不方便啊!
这样查看C/C++ 中的precompile macro中会有添加_UNICODE
如果定义了_UNICODE 你的工程就已经被IDE添加了_UNICODE了。
其实你可以自己定义my_tcslen就像这样:
#ifdef _UNICODE
typedef wchar_t my_tcslen
#else
typedef char my_tcslen
#endif你会发现如果你的工程定义了unicode字符集 ide中
#else
typedef char my_tcslen
#endif
这段是灰色的反之
#ifdef _UNICODE
typedef wchar_t my_tcslen
这段是灰色的。(VS 08)我一般这样用:
标准c++中string 分为string和wstring我一般会自己定义一个_tstring来自适应宽字符或者多字符
#ifdef _UNICODE
typedef wstring _tstring
#else
typedef string _tstring
#endif
这样不管工程是多字符还是宽字符只要用_tstring str就可以达到自适应的目的了。
不知道你明白没有。至于多字符与宽字符的区别。宽字符一般用2个char类存储一个字。而多字符ascii码采用1个字符。其他被分解为两个char存储。
他们都是宏,#define UNICODE(定义了UNICODE), #undef UNICODE(取消UNICODE)
#define _UNICODE这样工程就是unicode的了, 程序中所有与字符串有关的函数都要采用unicode版本的, 即带w的, 如MessageBoxW
《Windows程序设计》中这个问题讲得比较清楚。