IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

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

    mao0514发表于 2016-09-28 09:47:06
    love 0
    简单一点:就是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的,所以需要改变。


沪ICP备19023445号-2号
友情链接