+ -
当前位置:首页 → 问答吧 → CString问题

CString问题

时间:2011-12-03

来源:互联网

C/C++ code
#include "iostream"
#define UNICODE
#define _UNICODE
#include "tchar.h"
#define _AFXDLL
#include "afx.h"
#pragma comment(linker,"/ENTRY:TEST")
using namespace std;
using namespace ATL;
int TEST() {
    CString aa(_TEXT("afdsasd"));
    cout << aa << endl;//这里输出的为什么不是afdsasd,而是aa这个变量的地址?
//而如果把上面的UNICODE与_UNICODE删掉, 这里输出的就是afdsasd 了。
    cin.get();
    return 0;
}


问题在注释里面,谢谢回答 。

作者: ereere235   发布时间: 2011-12-03

_TEXT宏只有在定义了unicode的时候才会生效,非unicode下编译器会忽略它

作者: et214721856   发布时间: 2011-12-03

引用 1 楼 et214721856 的回复:

_TEXT宏只有在定义了unicode的时候才会生效,非unicode下编译器会忽略它

答非所问。

作者: ereere235   发布时间: 2011-12-03

引用 2 楼 ereere235 的回复:

引用 1 楼 et214721856 的回复:

_TEXT宏只有在定义了unicode的时候才会生效,非unicode下编译器会忽略它

答非所问。

你好拽!

作者: et214721856   发布时间: 2011-12-03

引用 2 楼 ereere235 的回复:
引用 1 楼 et214721856 的回复:

_TEXT宏只有在定义了unicode的时候才会生效,非unicode下编译器会忽略它

答非所问。

为什么

作者: peng_weida   发布时间: 2011-12-03

可能原因:
由于std::cout 并木有重载operator<<(CString&).
CString在UNICODE下木有重载operator char*(),但有operator(char以外类型)*()
所以输出地址。
而CString非UNICODE下可能有重载operator char*()假如operator char*()实现是返回CString中字符串的话就可以正常输入了。

作者: Demon__Hunter   发布时间: 2011-12-03