工程是支持unicode的
假如我有下面的代码
cstring a = _T("");
cstring b = "";
结果会怎么样?
还有1个unicode概念的问题
我的想象是
如果不定义unicode的话,
就是1个char保存一个字符
那么
char a = '论';    会保存不了,是吗?
wchar a = '论';   才可以吗?
那么
cstring a  = "论";  也不可以是吗?
unicode为什么产生的?
是因为各个国家的字符不一样,各自的os保存字符的方式也不一样,
为了跨os出来的吗?

解决方案 »

  1.   

    Unicode就是一个字符编码格式,一般用两个字节来表示一个字符,因为有两个字节,所以它既可以表示汉字,也能表示中文等
      

  2.   

    UNICODE 是为了支持ASCII以外更多的文字而出的一种编码,是否能跨OS我不知道,但是 如果你再建立一个UNICODE工程的情况下,系统会自动根据#define UNICODE 来找到合适的类型匹配,
    所以 char a = '论';    会保存不了,是吗? 
    wchar a = '论';  才可以吗? 
    那么 
    cstring a  = "论";  也不可以是吗? 都可以工程是支持unicode的 
    假如我有下面的代码 
    cstring a = _T(""); 
    cstring b = ""; 
    结果会怎么样? 
    也都一样
      

  3.   

    假如我有下面的代码
    cstring a = _T("");   //没问题,
    cstring b = "";       //编译出错,需要用宽字符
    结果会怎么样? 
      

  4.   

    一般我们都是用的ASCII(微软的)编码格式,也是为英文量身定做的。但是编码方式对于只有26个字母的英文,外加一些其他的符号。
    ASCII的最大特点是单字节(8bit)的,这样对于中文和其他的世界其他国家的文字,根本是不够用的。因为这些国家的文字都成千上万的。最了达到兼容的目的,出现了UNICODE,UNICODE最大的特点是双字节(16bit)的。这样就极大的扩充了字符的含量。而且为了保持于ASCII的兼容,UNICODE的高字节为0的时候,其低字节和ASCII是等同的。其他还有UTF-8,UTF-16编码,这种是可变长度的。具体的编码方式,你可以参看资料ASCII编码 http://baike.baidu.com/view/15482.htm
    UNICODE编码 http://baike.baidu.com/view/40801.htm
    UTF-8编码 http://baike.baidu.com/view/25412.htm
    UTF-16编码 http://baike.baidu.com/view/497266.htm其实如果你工程中设定了unicode,编译器默认是按照2个字节的空间来存储和读取的。否则,则按照一个字节。在unicode的情况下,你用单字节的方式
    cstring b = ""; 编译不过的
      

  5.   

    cstring b = "";      //编译出错,需要用宽字符 
    在vc++2005下编译好像能通过
      

  6.   

    ascii是ansi美国国家标准局制定的
    有这个标准的时候微软应该都还不存在,表把这个加到微软头上
      

  7.   

    严格意义上来讲 是会有问题,如果想用CString 存储汉字 需要用CStringW这样的别扭类型,W表示宽字符,同理WCHAR 不过MS一般给你搞的很出色,基本上不会让你在这里纠缠
      

  8.   

    UNICODE 使用2个字节表示一个字符(unsigned shor int、WCHAR、_wchar_t、OLECHAR)。CString b = "";      //编译出错,需要用宽字符 
    CString b("");      //是可以的
      

  9.   

    加上内容就会有问题了
    cstring b = "11";