// BSTR_Convert.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <comutil.h> // _com_util::ConvertBSTRToString
#include <atlbase.h> //CComBSTR
#include <atlstr.h> #pragma comment(lib, "comsuppw.lib") using namespace _com_util; int _tmain(int argc, _TCHAR* argv[])
{
/****** BSTR->char* *****/
//方法一使用 ConvertBSTRToString
//BSTR bstrText = ::SysAllocString(L"Test");
//char* lpszText = _com_util::ConvertBSTRToString(bstrText);
//SysFreeString(bstrText);//用完释放
//delete[] lpszText;
//方法二 使用_bstr_t的赋值运算符重载
//_bstr_t b = bstrText;
//char* lpstrText1 = b; /****** char*->BSTR *****/
//方式一 使用SysAllocString等API函数
//BSTR bstrText = ::SysAllocString(L"Test");
//BSTR bstrText1 = ::SysAllocStringLen(L"Test1",3);
//BSTR bstrText2 = ::SysAllocStringByteLen("Test2",4);//乱码 //方式二 使用COleVariant或_variant 编译出错 属于MFC?无法再WIN32下使用?
//COleVariant strVar("this is a test");
//_variant_t strVar1("this is a test");
//BSTR bstrText = strVar.bstrVal;
//BSTR bstrText1 = strVar1.bstrVal; //方式三 方法三,使用_bstr_t,这是一种最简单的方法。
//BSTR bstrText = _bstr_t("This is a test"); //方法四,使用CComBSTR。例如:
//BSTR bstrText = CComBSTR("This is a test");
//CComBSTR bstr1("This is a test");
//BSTR bstrText1 = bstr1.m_str; //方法五,使用ConvertStringToBSTR。
//char* lpszText = "Test";
//BSTR bstrText2 = _com_util::ConvertStringToBSTR(lpszText); /******* CString->BSTR *******/
//通 常是通过使用CStringT::AllocSysString来实现
CString cstr("this is a test");
BSTR bstrText = cstr.AllocSysString();
SysFreeString(bstrText); /******* BSTR -> CString *******/
//BSTR bstrText = ::SysAllocString(L"Test");
//CString cstr;
//cstr.Empty();
//cstr = bstrText;
// 或 CStringA str(bstrText); system("pause");
return ;
}

BSTR与char*、cstring、CComBSTR的转换的更多相关文章

  1. 转:char*, char[] ,CString, string的转换

    转:char*, char[] ,CString, string的转换 (一) 概述 string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准 ...

  2. VC中BSTR、Char和CString类型的转换

    1.char*转换成CString 若将char*转换成CString,除了直接赋值外,还可使用CString::format进行.例如: char chArray[] = "This is ...

  3. MFC中char*,string和CString之间的转换

    MFC中char*,string和CString之间的转换 一.    将CString类转换成char*(LPSTR)类型 方法一,使用强制转换.例如:  CString theString( &q ...

  4. CString string char* char 之间的字符转换(多种方法)

    在写程序的时候,我们经常遇到各种各样的类型转换,比如 char* CString string 之间的互相转换.首先解释下三者的含义. CString 是一种很有用的数据类型.它们很大程度上简化了MF ...

  5. Char* ,CString ,WCHAR*之间的转换

    关于Char* ,CString ,WCHAR*之间的转换问题 GDI+所有类的接口函数如果要传递字符串作为参数的话,似乎都用UNICODE串,即WCHAR*.我开始也被整得晕头转向,因为窗口编程所用 ...

  6. CString与string、char*的区别和转换

    转自:http://blog.csdn.net/luoweifu/article/details/20232379 我们在C++的开发中经常会碰到string.char*以及CString,这三种都表 ...

  7. 【转】CString与string、char*的区别和转换

    我们在C++的开发中经常会碰到string.char*以及CString,这三种都表示字符串类型,有很多相似又不同的地方,常常让人混淆.下面详细介绍这三者的区别.联系和转换: 各自的区别 char*: ...

  8. MFC string char cstring 类型转换

    在Unicode环境下用以下转换: CString z_strCurtTime = _T(""); // 获取当前时间 CTime z_tCurTime = CTime::GetC ...

  9. NSString / NSData / char* 类型之间的转换

    转自网络: NSString / NSData / char* 类型之间的转换 1. NSString转化为UNICODE String: (NSString*)fname = @“Test”; ch ...

  10. char类型的数值转换

    在视频教程中,你已经认识到了数字类型之间.字符串和其他类型之间的转换.而某些时候,我们还需要将char类型转换为int类型,或者把int类型转换为char类型. 这篇文章,将介绍在代码中虽然不太常用, ...

随机推荐

  1. DHCP配置实例

    配置DHCP的思路: 1.创建dhcp服务2.添加一个网络号(或者说地址池)3.排除路由器的网管4.排除DHCP的网关 代码: Router>enableRouter#configRouter# ...

  2. 用JS的正则表达式如何判断输入框内为中文或者是英文

    1.只能输入数字和英文的: <input onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clip ...

  3. git commit 多行注释方法说明

    为了提高项目质量,不仅仅是代码的质量,而且还包括代码管理的质量. 所以,详细的git commit message 必不可少. 现在记录一下git commit 多行详细的commit 信息. 首先, ...

  4. WIFEXITED/WEXITSTATUS/WIFSIGNALED

    WIFEXITED/WEXITSTATUS/WIFSIGNALED If the exit status value (*note Program Termination::) of the chil ...

  5. java——关于异常处理机制的简单原理和应用

    异常处理机制的简单原理和应用 一.Execption可以分为java标准定义的异常和程序员自定义异常2种 (1)一种是当程序违反了java语规则的时候,JAVA虚拟机就会将发生的错误表示为一个异常.这 ...

  6. Hibernate使用createSqlQuery进行模糊查询时找不到数据

    1. 首先明确一点,使用createSqlQuery如下两种方式的占位符都可以使用,这个在官方的文档可以查到. 注意使用模糊查询时,赋值两边不可以添加单引号. Query query = sess.c ...

  7. Java命令学习系列(三)——Jmap

    Java命令学习系列(三)——Jmap 2015-05-16 分类:Java 阅读(479) 评论(0) Jmap jmap是JDK自带的工具软件,主要用于打印指定Java进程(或核心文件.远程调试服 ...

  8. NODE_PATH的疑难杂症(转)

    nodejs 中的 NODE_PATH 在使用 nodejs 开发中我们都免不了要去安装一些第三方模块. 那么你或多或少的遇到过以下一些问题 再继续阅读之前,我们先来弄清楚一个概念. npm inst ...

  9. NLog 配置与使用

    有段时间没写博客了,过年放假,一直在弄CMS.什么都自己写了一遍,今天写写NLog,之前一用的log4net,感觉配置起来还是有些麻烦. NuGet 添加组件 配置 NLog.config <? ...

  10. Linux 终端下快速移动光标

    ctr+a:移动光标到命令行开始处(紧接命令提示符号) ctr+e:移动光标到命令行行尾 ctr+k:删除光标到命令行行尾 ctr+u:删除光标到命令行开始处 ctr+h: 往后删除一字符 ctr+d ...