vc6.0转vs2005中字符串的问题

时间:2024-07-02 23:35:38

简单一点:就是project->Property->Configuration Property-->general-->Character Set:No Set即可。详细分析见下面: 
C++中的字符类型:Wchar,char,其中Wchar是宽字符,即Unicode,每个字符都是两个字节。char类型就是一般的ASCII码,另外的多字节编码与此类似(MBCS)。但是W与A这两种类型是截然不同的,为了书写的统一,定义了一种Tchar的类型,这种类型在你程序编译为Unicode是,就是Wchar类型,反之为char类型。
_T("")就是这种类型,L“”,就是指Wchar,什么都没有就是char类型。
对于GetLength()而言,其Unicode的话,得到是字符数,不是字节数。对于ASCII码而言是字节数。
对于预定义的不同,#define Unicode 的情况下是TEXT(""),而vs2005中貌似是预定义_Unicode,因此式_T("")。
对于LPCTSTR中的T就是TEXT或者_T的意思,C指的是常数。
对于W,A,T之间的转换,(A指的就是ASCII码)有专门的宏:
W2T("",""),W2CT等。
MultiByteToWideChar函数也可以用来转换。

为了简单意见,编译设置的时候统统采用no set,即不采用unicode编码,这样vs2005就能直接使用vc6.0了,因为vc6.0默认是ASCII的,而vs2005默认是unicode的,所以需要改变。