一:cout,wcout输出测试 调试环境:VS2005 UNICODE 代码段如下 _setmode(fileno(stdout),_O_BINARY); TCHAR *pBuf = NULL; SafeArrayAccessData(varBLOB.parray,(void **)&pBuf); SafeArrayUnaccessData (varBLOB.parray); wcout<<pBuf<<endl; //输出应该为pBuf指向的从数据库读出的图像部分二进制数据(正确函数用法下面在介绍) cout<<&pBuf<<endl; //2 pBuf指针的地址 cout<<static_cast<void *>(pBuf)<<endl; //3 pBuf指向的二进制数据块首地址(如果想输出一个指针所指的地址,只要把此指针强制转换成 void * 即可,C++ Primer 3 中,cout一章有此例子) cout<<endl; TCHAR *test = L"adf"; cout<<test<<endl; //4 test指向的字符串常量首地址,至于为啥不是adf,原因在于test是宽字节,而cout是单字节输出函数,所以变成输出test的字符串第一个字节首地址 wcout<<test<<endl; // 此处输出为正确的adf,控制台中显示似乎还有一个空格。。 cout<<endl; char *testb = "abc"; cout<<testb<<endl; // 输出正确,且没空格 wcout<<testb<<endl; // 此处输出虽然也为字符,(与上一个例子不相反 - -!)但是字符中间有空格。。 //字符中间有空格的原因查明,是代码前有一段 _setmode(fileno(stdout),_O_BINARY);设置成二进制就会有空格。改成 _setmode(fileno(stdout),_O_TEXT);无空格 显示结果如下: 另: