一直对支持UNICODE比较含糊,虽然有点了解.我看到如下代码:  strcpy(cBuffer, _T("无变化"));strcpy只是用在asci环境下,那么这里_T("无变化")加这个_T宏
有什么用处呢?还有个问题恳请大家帮忙,那就是我程序里所有的字符串前都加了
_T宏,为的是想支持宽字符或UNICODE环境,可是程序里许多函数都
是asci环境下的,如strcpy,那么遇到这些情况该怎么处理呢?加这
些_T宏有意义吗?谢谢!急!

解决方案 »

  1.   

    如果定义了UNICODE宏 strcpy(cBuffer, _T("无变化"))会出错;
    正确用法是:
     _tcscpy(cBuffer, _T("无变化"));
      

  2.   

    那我程序里用到的大量ascii环境下的函数
    是否要全部修改啊?
      

  3.   

    一般用ascii就可以了,如果没有必要,不需要用_T
      

  4.   

    完全同意:QunKangLi(维护成本与程序员的创造力的平方成正比) 的意见,我吃过不少苦了,
    定义字符串最好用带T的,如TCHAR,LPCTSTR,LPTSTR,函数也一样,如_tcslen(),_tcscpy();
    这样,在需要从非unicode转到unicode或者做相反转换的时候,最小的改动你的代码。
      

  5.   

    我也不清楚为什么要用 unicode ,应该是为了语言的国际化吧,可是 Win98 只有很少的函数支持 unicode ,那么它是如何做到国际化这个概念的的呢,我不明白。看了 《Windows程序设计》 上面写的,对于 ascii 和 unicode ,系统提供了两套不同的字符串操作函数,因为两种所占的字节数不相同,所以计算起来是不一样的。最好用的时候查一下 MSDN ,一般都可以找到的。如果有说的不对的地方,欢迎指正。