bool ABC(BSTR bstr,BSTR* pbstr);
bool CBA(string str,string* pstr);bool abc(BSTR bstr,BSTR* pbstr)
{
USES_CONVERSION;
CString cstr;
string str;
string* pstr;
cstr = W2A(bstr);
str = (LPCTSTR)cstr; //给第一个参数赋值这个是正确的
CBA(str,pstr); //这里的pstr返回后要给pbstr赋值怎么赋值啊
pbstr = ???? //这里怎么赋值啊,我本来写的是pbstr = A2BSTR(pstr->c_str());
}
bool CBA(string str,string* pstr);bool abc(BSTR bstr,BSTR* pbstr)
{
USES_CONVERSION;
CString cstr;
string str;
string* pstr;
cstr = W2A(bstr);
str = (LPCTSTR)cstr; //给第一个参数赋值这个是正确的
CBA(str,pstr); //这里的pstr返回后要给pbstr赋值怎么赋值啊
pbstr = ???? //这里怎么赋值啊,我本来写的是pbstr = A2BSTR(pstr->c_str());
}
解决方案 »
- 鼠标拾取 的问题~~
- VC封装用于接收COM端口字符的函数
- 急啊!在线等!很基本的问题!关于状态栏的!
- 重新开贴~~小问题啊~~~
- 使控件充满整个对话框,当对话框缩放的时候,控件的大小跟着变化?
- 高手们:c++中有这个文件吗?graphics.h
- 如何使用settimer()函数??
- 为什么,有进行索引,有主关键字,又eof bof 不等于真 为什么连续用两次 adodc1.recordset.delete 方法会出错。
- 哪位大侠给我一个打开关闭串口的例程!!急急急!
- html中如何通过javascript传递document给activex?
- 关于CREATEPROCESS()的问题
- 窗口绘图问题
*pbstr=cstr.allocsysstring();
不过我感觉你的代码由问题,注意指针的使用。
而且CString与设置Unicode编译有关的,所以你的代码不是很好。如果单纯想从asci(char ,我称为窄字符)到unicode(wchar 宽字符)的转换,CString 在非unicode编译时是char,否则wchar。转换函数无非就是w2a等宏。此外,string 是stl提供的,对应的是char,stl同样提供wstring,对应wchar.bstr都是wchar 。如果程序中要用到BSTR,最好用CComBSTR,这样你就不会有内存上问题了。纯的BSTR变量定义后,用完后是一定要释放的,否则内存泄漏。
我建议程序使用Unicode编译,因为windows 98 第二版及其之后的操作系统api都是使用unicode的,所以可以提高程序运行效率的。
error C2679: 二进制“=”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换)