怎么cstring在cout中的输出乱了?
CString cpath = _T( "D:\\yx\\test\\*.* ");
cout < < cpath < <endl;
控制台输出为:0039D8D0
环境:win2003server vc2005
[解决办法]
工程是UNICODE的,使用NotSet或者Multi-CharSet就行了。
[解决办法]
std::cout不支持宽字符,如果需要使用UNICODE,需要使用std::wcout输出宽字符。同时,需要对CString做一下转换,LPCTSTR(cpath);
[解决办法]
试试
CString cpath = _T( "D:\\yx\\test\\*.* ");
cout < < (LPCTSTR)cpath < < endl;
[解决办法]
cout < < cpath.GetBuffer(MAX_PATH) < < endl;
cpath.ReleaseBuffer();
[解决办法]
楼上的两种方法都是不行的。
因为LZ建的工程是UNICODE的,所以,CString中用的是UNICODE编码。处理UNICODE,当然要用宽字符函数了。因此,wcout是必需的。
[解决办法]
现在还有人用cout 么....(*^__^*) 嘻嘻……
[解决办法]
不好意思啊,我还在用cout......^_^
[解决办法]
wcout < <cpath.GetString() < <endl;
[解决办法]
呵呵,楼上的也可以。
PS:
To htqx(航天奇侠) :
我纯用C++做引擎的,因为效率的原因,一般来说最多用用与OS相关的API,不会使用JAVA或者C#之类“高级”的东西,所以还停留在使用std::cout之类的“低级”阶段,见笑了。
[解决办法]
效率?C++流比C的printf等等慢多啦,你怎么能用呢?