CString,BSTR,LPCTSTR 之间的关系【BSTR,_bstr_t, CComBSTR】

【编程拾遗】VC++中LPCTSTR、CString、char *、string之间的相互转换 字符集 在VC2012中,字符集默认采用Unicode字符集(Use Unicode Charecter Set选项),其值还可以设置为多字节字符集(Use Multi-Byte Charecter Set)。 为什么要使用Unicode 可以很容易地在不同语言之间进行数据交换。使你能够分配支持所有语言的单个二进制.exe文件或DLL文件。提高应用程序的运行效率。 阅读详情
CString ,BSTR ,LPCTSTR之间关系和区别 

CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指针。 

CString 是一个完全独立的类,动态的TCHAR数组,封装了 + 等操作符和字符串操作方法。 
typedef OLECHAR FAR* BSTR; 
typedef const char * LPCTSTR; 

vc++中各种字符串的表示法 

首先char* 是指向ANSI字符数组的指针,其中每个字符占据8位(有效数据是除掉最高位的其他7位),这里保持了与传统的C,C++的兼容。 

LP的含义是长指针(long pointer)。LPSTR是一个指向以‘\0’结尾的ANSI字符数组的指针,与char*可以互换使用,在win32中较多地使用LPSTR。 
而LPCSTR中增加的‘C’的含义是“CONSTANT”(常量),表明这种数据类型的实例不能被使用它的API函数改变,除此之外,它与LPSTR是等同的。 
1.LP表示长指针,在win16下有长指针(LP)和短指针(P)的区别,而在win32下是没有区别的,都是32位.所以这里的LP和P是等价的. 
2.C表示const 
3.T是什么东西呢,我们知道TCHAR在采用Unicode方式编译时是wchar_t,在普通时编译成char. 

为了满足程序代码国际化的需要,业界推出了Unicode标准,它提供了一种简单和一致的表达字符串的方法,所有字符中的字节都是16位的值,其数量也可以满足差不多世界上所有书面语言字符的编码需求,开发程序时使用Unicode(类型为wchar_t)是一种被鼓励的做法。 

LPWSTR与LPCWSTR由此产生,它们的含义类似于LPSTR与LPCSTR,只是字符数据是16位的wchar_t而不是char。 

然后为了实现两种编码的通用,提出了TCHAR的定义: 
如果定义_UNICODE,声明如下: 
typedef wchar_t TCHAR; 
如果没有定义_UNICODE,则声明如下: 
typedef char TCHAR; 

LPTSTR和LPCTSTR中的含义就是每个字符是这样的TCHAR。 

CString类中的字符就是被声明为TCHAR类型的,它提供了一个封装好的类供用户方便地使用。 

LPCTSTR: 
     #ifdef _UNICODE 
        typedef const wchar_t * LPCTSTR; 
     #else 
        typedef const char * LPCTSTR; 
     #endif 

VC常用数据类型使用转换详解 

先定义一些常见类型变量借以说明 
int i = 100; 
long l = 2001; 
float f=300.2; 
double d=12345.119; 
char username[]="女侠程佩君"; 
char temp[200]; 
char *buf; 
CString str; 
_variant_t v1; 
_bstr_t v2; 

一、其它数据类型转换为字符串 

短整型(int) 
       itoa(i,temp,10);     //将i转换为字符串放入temp中,最后一个数字表示十进制 
       itoa(i,temp,2);      //按二进制方式转换 
长整型(long) 
       ltoa(l,temp,10); 

二、从其它包含字符串的变量中获取指向该字符串的指针 

CString变量 
str = "2008北京奥运"; 
buf = (LPSTR)(LPCTSTR)str; 
BSTR类型的_variant_t变量 
v1 = (_bstr_t)"程序员"; 
buf = _com_util::ConvertBSTRToString((_bstr_t)v1); 

三、字符串转换为其它数据类型 
strcpy(temp,"123"); 

短整型(int) 
      i = atoi(temp); 
长整型(long) 
      l = atol(temp); 
浮点(double) 
      d = atof(temp); 

四、其它数据类型转换到CString 

使用CString的成员函数Format来转换,例如: 

整数(int) 
      str.Format("%d",i); 
浮点数(float) 
      str.Format("%f",i); 
字符串指针(char *)等已经被CString构造函数支持的数据类型可以直接赋值 
      str = username; 

五、BSTR、_bstr_t 与 CComBSTR 

CComBSTR、_bstr_t是对BSTR的封装,BSTR是指向字符串的32位指针。 

使用_com_util要做以下引用:

#include <comutil.h>

#pragma comment(lib, "comsupp.lib")

BSTR bstr = _com_util::ConvertStringToBSTR("数据");

char *cstr = _com_util::ConvertBSTRToString(bstr);

delete[] cstr; 

::SysFreeString(bstr);



六、VARIANT 、_variant_t 与 COleVariant 

VARIANT的结构可以参考头文件VC98\Include\OAIDL.H中关于结构体tagVARIANT的定义。 
对于VARIANT变量的赋值:首先给vt成员赋值,指明数据类型,再对联合结构中相同数据类型的变量赋值,举个例子: 
VARIANT va; 
int a=2001; 
va.vt=VT_I4;    //指明整型数据 
va.lVal=a;      //赋值 


对于不马上赋值的VARIANT,最好先用Void VariantInit(VARIANTARG FAR* pvarg);进行初始化,其本质是将vt设置为VT_EMPTY,下表我们列举vt与常用数据的对应关系: 


unsigned char bVal; VT_UI1 
short iVal; VT_I2 
long lVal;  VT_I4  
float fltVal;  VT_R4 
double dblVal;  VT_R8  
VARIANT_BOOL boolVal;  VT_BOOL 
SCODE scode;  VT_ERROR 
CY cyVal;  VT_CY 
DATE date;  VT_DATE 
BSTR bstrVal;  VT_BSTR 
IUnknown FAR* punkVal;  VT_UNKNOWN 
IDispatch FAR* pdispVal;  VT_DISPATCH 
SAFEARRAY FAR* parray;  VT_ARRAY|* 
unsigned char FAR* pbVal;  VT_BYREF|VT_UI1 
short FAR* piVal;  VT_BYREF|VT_I2 
long FAR* plVal;  VT_BYREF|VT_I4 
float FAR* pfltVal;  VT_BYREF|VT_R4 
double FAR* pdblVal; VT_BYREF|VT_R8 
VARIANT_BOOL FAR* pboolVal; VT_BYREF|VT_BOOL 
SCODE FAR* pscode;  VT_BYREF|VT_ERROR 
CY FAR* pcyVal;  VT_BYREF|VT_CY 
DATE FAR* pdate; VT_BYREF|VT_DATE 
BSTR FAR* pbstrVal;  VT_BYREF|VT_BSTR 
IUnknown FAR* FAR* ppunkVal;  VT_BYREF|VT_UNKNOWN 
IDispatch FAR* FAR* ppdispVal; VT_BYREF|VT_DISPATCH 
SAFEARRAY FAR* FAR* pparray;  VT_ARRAY|* 
VARIANT FAR* pvarVal;  VT_BYREF|VT_VARIANT 
void FAR* byref;  VT_BYREF 

_variant_t是VARIANT的封装类,其赋值可以使用强制类型转换,其构造函数会自动处理这些数据类型。 
例如: 
long l=222; 
ing i=100; 
_variant_t lVal(l); 
lVal = (long)i; 

COleVariant的使用与_variant_t的方法基本一样,请参考如下例子: 
COleVariant v3 = "字符串", v4 = (long)1999; 
CString str =(BSTR)v3.pbstrVal; 
long i = v4.lVal; 

七、其它 

对消息的处理中我们经常需要将WPARAM或LPARAM等32位数据(DWORD)分解成两个16位数据(WORD),例如: 
LPARAM lParam; 
WORD loValue = LOWORD(lParam);     //取低16位 
WORD hiValue = HIWORD(lParam);     //取高16位 
对于16位的数据(WORD)我们可以用同样的方法分解成高低两个8位数据(BYTE),例如: 
WORD wValue; 
BYTE loValue = LOBYTE(wValue);     //取低8位 
BYTE hiValue = HIBYTE(wValue);     //取高8位 

如何将CString类型的变量赋给char*类型的变量 
1、GetBuffer函数: 
使用CString::GetBuffer函数。 
char *p; 
CString str="hello"; 
p=str.GetBuffer(str.GetLength()); 
str.ReleaseBuffer(); 

将CString转换成char * 时 
CString str("aaaaaaa"); 
strcpy(str.GetBuffer(10),"aa"); 
str.ReleaseBuffer(); 
当我们需要字符数组时调用GetBuffer(int n),其中n为我们需要的字符数组的长度.使用完成后一定要马上调用ReleaseBuffer(); 
还有很重要的一点就是,在能使用const char *的地方,就不要使用char * 

2、memcpy: 
CString mCS=_T("cxl"); 
char mch[20]; 
memcpy(mch,mCS,20); 

3、用LPCTSTR强制转换: 尽量不使用 
char *ch; 
CString str; 
ch=(LPSTR)(LPCTSTR)str; 

CString str = "good"; 
char *tmp; 
sprintf(tmp,"%s",(LPTSTR)(LPCTSTR)str); 

4、 
CString Msg; 
Msg=Msg+"abc"; 
LPTSTR lpsz; 
lpsz = new TCHAR[Msg.GetLength()+1]; 
_tcscpy(lpsz, Msg); 
char * psz; 
strcpy(psz,lpsz); 

CString类向const char *转换 
char a[100]; 
CString str("aaaaaa"); 
strncpy(a,(LPCTSTR)str,sizeof(a)); 
或者如下: 
strncpy(a,str,sizeof(a)); 
以上两种用法都是正确地. 因为strncpy的第二个参数类型为const char *.所以编译器会自动将CString类转换成const char *. 

CString转LPCTSTR (const char *) 
CString cStr; 
const char *lpctStr=(LPCTSTR)cStr; 

LPCTSTR转CString 
LPCTSTR lpctStr; 
CString cStr=lpctStr; 

将char*类型的变量赋给CString型的变量 
可以直接赋值,如: 
CString myString = "This is a test"; 
也可以利用构造函数,如: 
CString s1("Tom"); 

将CString类型的变量赋给char []类型(字符串)的变量 
1、sprintf()函数 
CString str = "good"; 
char tmp[200] ; 
sprintf(tmp, "%s",(LPCSTR)str);  
(LPCSTR)str这种强制转换相当于(LPTSTR)(LPCTSTR)str 
CString类的变量需要转换为(char*)的时,使用(LPTSTR)(LPCTSTR)str 

然而,LPCTSTR是const char *,也就是说,得到的字符串是不可写的!将其强制转换成LPTSTR去掉const,是极为危险的! 
一不留神就会完蛋!要得到char *,应该用GetBuffer()或GetBufferSetLength(),用完后再调用ReleaseBuffer()。 

2、strcpy()函数 
CString str; 
char c[256]; 
strcpy(c, str); 

char mychar[1024]; 
CString source="Hello"; 
strcpy((char*)&mychar,(LPCTSTR)source); 


关于CString的使用 
1、指定 CString 形参 
    对于大多数需要字符串参数的函数,最好将函数原型中的形参指定为一个指向字符 (LPCTSTR) 而非 CString 的 const 指针。 
当将形参指定为指向字符的 const 指针时,可将指针传递到 TCHAR 数组(如字符串 ["hi there"])或传递到 CString 对象。 
CString 对象将自动转换成 LPCTSTR。任何能够使用 LPCTSTR 的地方也能够使用 CString 对象。 

2、如果某个形参将不会被修改,则也将该参数指定为常数字符串引用(即 const CString&)。如果函数要修改该字符串, 
则删除 const 修饰符。如果需要默认为空值,则将其初始化为空字符串 [""],如下所示: 
void AddCustomer( const CString& name, const CString& address, const CString& comment = "" ); 

3、对于大多数函数结果,按值返回 CString 对象即可。 

串的基本运算 
    对于串的基本运算,很多高级语言均提供了相应的运算符或标准的库函数来实现。 
为叙述方便,先定义几个相关的变量: 
    char s1[20]="dir/bin/appl",s2[20]="file.asm",s3[30],*p; 
    int result; 
    下面以C语言中串运算介绍串的基本运算 
1、求串长 
        int strlen(char *s);         //求串s的长度 
    【例】printf("%d",strlen(s1));    //输出s1的串长12 

2、串复制 
    char *strcpy(char *to,*from);//将from串复制到to串中,并返回to开始处指针 
    【例】strcpy(s3,s1);  //s3="dir/bin/appl",s1串不变 

3、联接 
    char *strcat(char *to,char *from);//将from串复制到to串的末尾, 
                                      //并返回to串开始处的指针 
    【例】strcat(s3,"/");    //s3="dir/bin/appl/" 
         strcat(s3,s2);     //s3="dir/bin/appl/file.asm" 

4、串比较 
    int strcmp(char *s1,char *s2);//比较s1和s2的大小, 
     //当s1<s2、s1>s2和s1=s2时,分别返回小于0、大于0和等于0的值 
    【例】result=strcmp("baker","Baker");    //result>0 
            result=strcmp("12","12");       //result=0 
            result=strcmp("Joe","joseph")   //result<0 

5、字符定位 
    char *strchr(char *s,char c);//找c在字符串s中第一次出现的位置, 
                                 //若找到,则返回该位置,否则返回NULL 
    【例】p=strchr(s2,'.');      //p指向"file"之后的位置 
     if(p) strcpy(p,".cpp");     //s2="file.cpp" 

  注意: 
     ①上述操作是最基本的,其中后 4个操作还有变种形式:strncpy,strncath和strnchr。 
     ②其它的串操作见C的<string.h>。在不同的高级语言中,对串运算的种类及符号都不尽相同 
     ③其余的串操作一般可由这些基本操作组合而成 

    【例】求子串的操作可如下实现: 
    void substr(char *sub,char *s,int pos,int len){ 
         //s和sub是字符数组,用sub返回串s的第pos个字符起长度为len的子串 
         //其中0<=pos<=strlen(s)-1,且数组sub至少可容纳len+1个字符。 
        if (pos<0||pos>strlen(s)-1||len<0) 
            Error("parameter error!"); 
        strncpy(sub,&s[pos],len);      //从s[pos]起复制至多len个字符到sub 
想发故障诊断论文?手把手教你用CWRU数据集复现第一个Baseline模型 本文提供了一份基于CWRU轴承数据集的故障诊断Baseline模型实战指南,手把手教你从数据准备到模型构建的全流程。通过详细的Python代码示例和学术级实验设计,帮助初学者快速复现第一个故障诊断模型,为发表高质量论文奠定基础。 阅读详情

相关推荐

6.5 构网型储能系统的协同控制策略

本文系统阐述了构网型储能系统的协同控制策略,重点分析了多机组群协同运行面临的功率分配不均、动态响应失配等挑战。研究提出了改进型下垂控制与虚拟阻抗法、基于一致性算法的分布式协同控制等解决方案,探讨了构网型储能与同步发电机在惯性响应、一次调频等方面的协同机制,以及与跟网型电源在电压支撑、阻抗重塑等方面的互补作用。文章构建了分层控制架构,为实现多类型电源的全局优化运行提供了技术路径,对提升高比例新能源电力系统的稳定性具有重要意义。

技术工作者 1001

CString 和 LPCTSTR等之间的转换

CString 和 LPCTSTR 可以说通用。 原因在于CString定义的自动类型转换,没什么奇特的,最简单的C++操作符重载而已。 常量字符串ansi和unicode的区分是由宏_T来决定的。但是用_T( "abcd ")时, 字符串 "abcd "就会根据编译时的是否定一_UNICODE来决定是char* 还是 w_char*。 同样,TCHAR 也是相同目的字符宏。 看看定义就明白了。简单起见,下面只介绍 ansi 的情况,unico...

大西瓜不甜的博客 4264

时序数据库避坑指南:TDengine与IoTDB在车联网场景的7个关键对比

本文对比了时序数据库TDengine与IoTDB在车联网场景下的7个关键差异,包括数据模型设计、边缘-云端协同能力、车规级函数库、存储压缩算法等。通过真实案例和性能测试,帮助企业在新能源汽车大数据处理中选择合适的时序数据库,优化存储成本和实时告警性能。

rust6ferris的博客 452

VC中数据类型之间的转换

CString ,BSTR ,LPCTSTR之间关系和区别CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指针。CString 是一个完全独立的类,动态的TCHAR数组,封装了 + 等操作符和字符串操作方法。typedef OLECHAR FAR* BSTR;typedef const char * LPCT

ct_hero0902的专栏 1456

C51编程25-应用篇(单片机与电脑端实现wifi通讯)

单片机使用ESP-01S wifi模块与电脑端进行数据通讯。

qq_34343637的博客 1万+

CVPR2023新作HAT实战:5分钟搞定图像超分辨率重建(附代码)

本文介绍了CVPR2023新作HAT模型在图像超分辨率重建中的实战应用。HAT通过创新的混合注意力机制,显著提升了图像重建质量,能激活更多有效像素并减少伪影。文章提供了从环境配置到模型部署的完整指南,帮助开发者在5分钟内快速实现图像超分辨率重建,并附有代码示例和性能优化技巧。

weixin_29062613的博客 237

LPCTSTR和CString的关系

类型理解   LPCTSTR类型:   L表示long指针 这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32位操作系统中, long指针和near指针及far修饰符都是为了兼容的作用。没有实际意义。   P表示这是一个指针   C表示是一个常量   T表示在Win32环境中, 有一个_T宏   STR表示这个变量是一个字符...

weixin_34268843的博客 1111

利用eds editor生成CANOPEN 设备eds文件

通过以上步骤,您可以根据实际设备的功能特性,自动生成一份符合CANopen协议标准的电子数据表(EDS文件),该文件可以被上位机软件或其他CANopen主站设备用于识别、配置和控制您的CANopen从站设备。使用CANopen EDS Editor生成CANOPEN设备的EDS文件是一个系统化的过程,它涉及将设备的具体技术参数和功能映射到CANopen规范定义的对象字典中。

weixin_38604759的博客 6458

CString 转换为LPWSTR

(LPWSTR)(LPCWSTR)(cmdLine.c_str()) //1、通过MultiByteToWideChar函数转换 MultiByteToWideChar函数是将多字节转换为宽字节的一个API函数,它的原型如下: int MultiByteToWideChar( UINT CodePage, // code page DWORD dwFlags, // chara...

Ryan 4580

DenseNet训练实践

在Cifar10上训练DenseNet,复现DenseNet论文的结果是后面两篇分析工作的基础,因此本系列的第一篇,将首先讨论深度学习的训练过程中的几个方面: 1. 数据集 1.1 Cifar10数据集 Cifar10数据集有6万张32X32的图片,是一个小型的数据集,但数据的复杂度足够,下图来自DenseNet论文,可以看出,不用数据增强的话,ResNet的正确率也很难超过90%,因而足以用来验...

一蓑烟雨任平生 1万+

【AI大模型应用开发】【LlamaIndex教程】2. 存储模块:如何在 LlamaIndex 中使用自定义的向量数据库?(附代码)

前面文章两行代码就实现了文档的切分和向量化存储以及持久化存储。如果我们想用自定义的向量化数据库呢?

同学小张的博客 2116

VC中BSTR、Char*、CString和CComBSTR类型的转换

1、char*转换成CString若将char*转换成CString,除了直接赋值外,还可使用CString::format进行。例如:char* p = "This is a test"; 或CString theString = p;theString.format("%s", p);theString = p;2、CString转换成char*若将CString类转换成char*(LPSTR)类型,常常使用下列三种方法:方法一,使用强制转换。例如:CString theString( "This is

闻道有先后,术业有专攻,如是而已。 1万+

飞牛NAS打造成童年经典游戏机

这篇文章介绍如何使用飞牛NAS搭建经典游戏模拟器。首先需开启Docker并下载RetroArch-web镜像,随后创建容器并设置端口映射。启动后上传游戏ROM文件(如NES格式),在模拟器中加载即可游玩。文章以修改版坦克大战为例,详细说明按键配置方法。同时还提到公网访问需配置DDNS或使用ZeroTier内网穿透。通过这套方案,用户可以在NAS上重温红白机等经典游戏体验。

dgnankai的专栏 884

char, BSTR, _bstr_t, CComBSTR之间的互相转换

char, BSTR, _bstr_t, CComBSTR之间的互相转换char:    To BSTR:         _com_util::ConvertStringToBSTR        CString的AllocSystemString    To _bstr_t:         _bstr_t的构造函数    To CComBSTR:        CComBSTR的构造函数BSTR:    To char:        _com_util::ConvertBSTRToString   

小青年儿 3598

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C++字符类型转换(BSTR、_bstr_t、CString、char *、LPCTSTR转换)

1、CString转BSTR BSTR bstr; CString strSql;  bstr = strSql.AllocSysString(); …  SysFreeString(bstrText); // 用完释放  注意:用完之后必须使用SysFreeString 释放!!! 2、BSTR转CString //方法一 BSTR bstr = ::SysAllocString(L...

Rain_Mic的博客 5423

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

CString ,BSTR ,LPCTSTR之间关系和区别

CString ,BSTR ,LPCTSTR之间关系和区别 CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指针。 CString 是一个完全独立的类,动态的TCHAR数组,封装了 + 等操作符和字符串操作方法。 typedef OLECHAR FAR* BSTR; typedef const char * LPCTSTR; vc++中各种字符串的表示法 首先char* 是指向ANSI字符数

哈哈哈 809

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

BSTR,_bstr_t,CComBSTR,VARIANT,_variant_t,CString的转换

转载:http://www.cnblogs.com/GoodGoodWorkDayDayUp/archive/2010/11/15/1877655.html VC6.0上编译通过,console程序,使用静态MFC库。也许有不对的地方,欢迎指正 #include #include #include #include void main() {     BSTR bstrT

Erick08的专栏 1200

CString, BSTR, LPCTSTR 概念

CString是一个动态TCHAR数组, BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵 ) LPCTSTR只是一个常量的TCHAR指针。 CString 是一个完全独立的类,动态的TCHAR数组,封装了+等操作符和字符串操作方法。 typedef OLECHAR FAR*...

254

CComBSTR,

<br />字符串类型转换总结<br />这里总结了BSTR, _bstr_t, CComBSTR, CString四种字符串类型之间的转换。其中BSTR为基本数据类型,另三个为字符串类。<br />首先声明四个类型的变量:<br />BSTR           strBigBSTR          = ::SysAllocString( _T( "BSTR" ));<br />_bstr_t         strSmallBSTR( _T( “_bstr_t” ))  ;<br />CComBSTR

chenwanming507507507的专栏 3877

BSTR,CString,LPCTSTR三者之间的转化

BSTR,CString,LPCTSTR三者之间的转化 BSTR是OLECHAR*类型的Unicode字符串。CComBSTR是ATL对BSTR封装类。_bstr_t是C++对BSTR的封装。    LPCTSTR是 const   char*。    除了用_bstr_t,也可以通过CString,BSTR可以直接赋给CString,然后通过强制转换(LPCTSTR)或strc

Jaylon Wang的专栏 6303

BSTR、LPSTR、LPWSTR、CString、VARIANT、COleVariant 、_variant_t、CComBSTR、_bstr_t

Visual C++.NET涉及到ATL/ATL Server、MFC和托管C++等多种编程方式,不仅功能强大而且应用广泛。在编程中,我们常常会遇到ANSI、Unicode以及BSTR不同编码类 型的字符串转换操作。本文先介绍基本字符串类型,然后说明相关的类,如CComBSTR、_bstr_t、CStringT等,最后讨论它们的转换方法, 其中还包括使用最新ATL7.0的转换类和宏,如CA2CT、

Erick08的专栏 700

BSTR、char*和CString转换

(1) char*转换成CString  若将char*转换成CString,除了直接赋值外,还可使用CString::Format进行。例如:char chArray[] = "This is a test";char * p = "This is a test";   或LPSTR p = "This is a test";   或在已定义Unicode应的用程序中

困兽犹斗的专栏 5万+

VC中BSTR、Char*、CString类型相互转换

1、char*转换成CString 若将char*转换成CString,除了直接赋值外,还可使用CString::format进行。例如: char chArray[] = "This is a test"; char * p = "This is a test"; 或 LPSTR p = "This is a test"; 或在已定义Unicode应的用程序中 TCH

mitesi的专栏 3320
上一篇: CListBox 带有复选框
下一篇: CHtmlView 在 Dialog 中实现浏览网页
一秀
博客等级 码龄14年 1粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值