#include<iostream>
#include"comutil.h"
#include <atlbase.h> #pragma comment( lib, "comsupp.lib" )using namespace std;
int main(){
char *a="hello";
cout<<a<<endl;
CComBSTR b=_com_util::ConvertStringToBSTR(a);
char *ch=(char*)(_com_util::ConvertBSTRToString(b.m_str));
cout<<ch<<endl;
if(ch==a)
cout<<"OK\n";
}
为什么不打印出OK? ch和a的字符串内容是相同的啊。
#include"comutil.h"
#include <atlbase.h> #pragma comment( lib, "comsupp.lib" )using namespace std;
int main(){
char *a="hello";
cout<<a<<endl;
CComBSTR b=_com_util::ConvertStringToBSTR(a);
char *ch=(char*)(_com_util::ConvertBSTRToString(b.m_str));
cout<<ch<<endl;
if(ch==a)
cout<<"OK\n";
}
为什么不打印出OK? ch和a的字符串内容是相同的啊。
char *ch;你比较2个指针,这两个指针肯定不相等的。if (::strcmp(a, ch) == 0)
#include"comutil.h"
#include <atlbase.h>
#pragma comment( lib, "comsupp.lib" )
using namespace std;
int main()
{
char *a="hello";
cout < <a < <endl;
wchar * wb=_com_util::ConvertStringToBSTR(a);
CComBSTR b=wb;
::SysFreeString(wb);//需要释放内存
char *ch=(char*)(_com_util::ConvertBSTRToString(b.m_str));
cout < <ch < <endl;
if(ch==a)
cout < <"OK\n";
delete []ch;//需要释放内存
}
看到以上楼主就明白为什么地址不一样了,实际上两个函数都申请了新的内存,和以前的指针无关,所以你必须释放,释放函数不同,请看MSDN关于函数的说明。