今天写个小程序,第一次使用vs2008。 知道vs2008默认打开了unicode字符的支持。自己也对unicode有些认识,所以想开始全部使用wchar。 建了个windows console的控制台项目,想打印一下其中的CString类型输出。

cout << strName << endl;

结果死活打印不出来。一直打印的是字符串的地址。 换用wcout之后,打印出来的是一写用逗号分隔的数字,也不是想要的结果。 实在没办法了,只好:

wcout << strName.GetBuffer() << endl; 

可以正常打印了,但是还是需要GetBuffer()一下,觉得很是不爽。

后来发现这样也可以

wprintf(_T("%s\n"), strName);

真是被这东西给搞死了。 结论就是:

  1. vs2008里面所有的字符都是wchar。所以所有的常量字符串前面都要使用_T()包围。
  2. 在打印时尽量调用w*系列函数。