VC++ vs vs2005 char cstring int 字符串 转换 (1)

VC++ MFC开发异常排查实战:从运行时崩溃到界面行为异常的解决方案 在Windows桌面应用开发中,运行时异常和内存管理是开发者常面临的核心挑战。其原理通常涉及资源生命周期管理、消息循环机制与线程安全等底层机制。掌握这些技术能显著提升应用稳定性与性能,尤其在维护大型遗留系统时价值凸显。本文聚焦VC++ MFC框架下的实战场景,通过分析内存泄漏、多线程UI访问等典型热词问题,系统讲解从依赖库冲突到界面绘制异常的排查路径,帮助开发者快速定位如‘0xc000007b’启动错误、CDockablePane停靠异常等高频故障,并提供工程配置与调试心法,实现从被动救火到主动预防的工程实 阅读详情

一、BSTR、LPSTR和LPWSTR 

  在Visual C++.NET的所有编程方式中,我们常常要用到这样的一些基本字符串类型,如BSTR、LPSTR和LPWSTR等。之所以出现类似上述的这些数据类型,是因为不同编程语言之间的数据交换以及对ANSI、Unicode和多字节字符集(MBCS)的支持。 

  那么什么是BSTR、LPSTR以及LPWSTR呢? 

  BSTR(Basic STRing,Basic字符串)是一个OLECHAR*类型的Unicode字符串。它被描述成一个与自动化相兼容的类型。由于操作系统提供相应的 API函数(如SysAllocString)来管理它以及一些默认的调度代码,因此BSTR实际上就是一个COM字符串,但它却在自动化技术以外的多种场合下得到广泛使用。图1描述了BSTR的结构,其中DWORD值是字符串中实际所占用的字节数,且它的值是字符串中Unicode字符的两倍。 

  LPSTR和LPWSTR是Win32和VC++所使用的一种字符串数据类型。LPSTR被定义成是一个指向以NULL(‘/0’)结尾的8位ANSI 字符数组指针,而LPWSTR是一个指向以NULL结尾的16位双字节字符数组指针。在VC++中,还有类似的字符串类型,如LPTSTR、 LPCTSTR等,它们的含义如图2所示。 

  例如,LPCTSTR是指“long pointer to a constant generic string”,表示“一个指向一般字符串常量的长指针类型”,与C/C++的const char*相映射,而LPTSTR映射为 char*。 

  一般地,还有下列类型定义: 

#ifdef UNICODE 
 typedef LPWSTR LPTSTR; 
 typedef LPCWSTR LPCTSTR; 
#else 
 typedef LPSTR LPTSTR; 
 typedef LPCSTR LPCTSTR; 
#endif 

  二、CString、CStringA 和 CStringW 

  Visual C++.NET中将CStringT作为ATL和MFC的共享的“一般”字符串类,它有CString、CStringA和CStringW三种形式,分别操作不同字符类型的字符串。这些字符类型是TCHAR、char和wchar_t。TCHAR在Unicode平台中等同于WCHAR(16位 Unicode字符),在ANSI中等价于char。wchar_t通常定义为unsigned short。由于CString在MFC应用程序中经常用到,这里不再重复。 

  三、VARIANT、COleVariant 和_variant_t 

  在OLE、ActiveX和COM中,VARIANT数据类型提供了一种非常有效的机制,由于它既包含了数据本身,也包含了数据的类型,因而它可以实现各种不同的自动化数据的传输。下面让我们来看看OAIDL.H文件中VARIANT定义的一个简化版: 

struct tagVARIANT { 
 VARTYPE vt; 
 union { 
  short iVal; // VT_I2. 
  long lVal; // VT_I4. 
  float fltVal; // VT_R4. 
  double dblVal; // VT_R8. 
  DATE date; // VT_DATE. 
  BSTR bstrVal; // VT_BSTR. 
  … 
  short * piVal; // VT_BYREF|VT_I2. 
  long * plVal; // VT_BYREF|VT_I4. 
  float * pfltVal; // VT_BYREF|VT_R4. 
  double * pdblVal; // VT_BYREF|VT_R8. 
  DATE * pdate; // VT_BYREF|VT_DATE. 
  BSTR * pbstrVal; // VT_BYREF|VT_BSTR. 
 }; 
}; 

  显然,VARIANT类型是一个C结构,它包含了一个类型成员vt、一些保留字节以及一个大的union类型。例如,如果vt为VT_I2,那么我们可以从iVal中读出VARIANT的值。同样,当给一个VARIANT变量赋值时,也要先指明其类型。例如: 

VARIANT va; 
:: VariantInit(&va); // 初始化 
int a = 2002; 
va.vt = VT_I4; // 指明long数据类型 
va.lVal = a; // 赋值 

  为了方便处理VARIANT类型的变量,Windows还提供了这样一些非常有用的函数: 

  VariantInit —— 将变量初始化为VT_EMPTY; 

  VariantClear —— 消除并初始化VARIANT; 

  VariantChangeType —— 改变VARIANT的类型; 

  VariantCopy —— 释放与目标VARIANT相连的内存并复制源VARIANT。 

  COleVariant类是对VARIANT结构的封装。它的构造函数具有极为强大大的功能,当对象构造时首先调用VariantInit进行初始化,然后根据参数中的标准类型调用相应的构造函数,并使用VariantCopy进行转换赋值操作,当VARIANT对象不在有效范围时,它的析构函数就会被自动调用,由于析构函数调用了VariantClear,因而相应的内存就会被自动清除。除此之外,COleVariant的赋值操作符在与VARIANT类型转换中为我们提供极大的方便。例如下面的代码:

COleVariant v1("This is a test"); // 直接构造 
COleVariant v2 = "This is a test"; 
// 结果是VT_BSTR类型,值为"This is a test" 
COleVariant v3((long)2002); 
COleVariant v4 = (long)2002; 
// 结果是VT_I4类型,值为2002 

  _variant_t是一个用于COM的VARIANT类,它的功能与COleVariant相似。不过在Visual C++.NET的MFC应用程序中使用时需要在代码文件前面添加下列两句: 

  #include "comutil.h" 

  #pragma comment( lib, "comsupp.lib" ) 
四、CComBSTR和_bstr_t 

  CComBSTR是对BSTR数据类型封装的一个ATL类,它的操作比较方便。例如: 

CComBSTR bstr1; 
bstr1 = "Bye"; // 直接赋值 
OLECHAR* str = OLESTR("ta ta"); // 长度为5的宽字符 
CComBSTR bstr2(wcslen(str)); // 定义长度为5 
wcscpy(bstr2.m_str, str); // 将宽字符串复制到BSTR中 
CComBSTR bstr3(5, OLESTR("Hello World")); 
CComBSTR bstr4(5, "Hello World"); 
CComBSTR bstr5(OLESTR("Hey there")); 
CComBSTR bstr6("Hey there"); 
CComBSTR bstr7(bstr6); 
// 构造时复制,内容为"Hey there" 

  _bstr_t是是C++对BSTR的封装,它的构造和析构函数分别调用SysAllocString和SysFreeString函数,其他操作是借用BSTR API函数。与_variant_t相似,使用时也要添加comutil.h和comsupp.lib。 

五、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应的用程序中 

TCHAR * p = _T("This is a test"); 

  或 

LPTSTR p = _T("This is a test"); 
CString theString = chArray; 
theString.Format(_T("%s"), chArray); 
theString = p; 

  (2) CString转换成char* 

  若将CString类转换成char*(LPSTR)类型,常常使用下列三种方法: 

  方法一,使用强制转换。例如: 

CString theString( "This is a test" ); 
LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString; 

  方法二,使用strcpy。例如: 

CString theString( "This is a test" ); 
LPTSTR lpsz = new TCHAR[theString.GetLength()+1]; 
_tcscpy(lpsz, theString); 

  需要说明的是,strcpy(或可移值Unicode/MBCS的_tcscpy)的第二个参数是 const wchar_t* (Unicode)或const char* (ANSI),系统编译器将会自动对其进行转换。 

  方法三,使用CString::GetBuffer。例如: 

CString s(_T("This is a test ")); 
LPTSTR p = s.GetBuffer(); 
// 在这里添加使用p的代码 
if(p != NULL) *p = _T('/0'); 
s.ReleaseBuffer(); 
// 使用完后及时释放,以便能使用其它的CString成员函数 

  (3) BSTR转换成char* 

  方法一,使用ConvertBSTRToString。例如: 

#include 
#pragma comment(lib, "comsupp.lib") 
int _tmain(int argc, _TCHAR* argv[]){ 
BSTR bstrText = ::SysAllocString(L"Test"); 
char* lpszText2 = _com_util::ConvertBSTRToString(bstrText); 
SysFreeString(bstrText); // 用完释放 
delete[] lpszText2; 
return 0; 
} 

  方法二,使用_bstr_t的赋值运算符重载。例如: 

_bstr_t b = bstrText; 
char* lpszText2 = b; 

  (4) char*转换成BSTR 

  方法一,使用SysAllocString等API函数。例如: 

BSTR bstrText = ::SysAllocString(L"Test"); 
BSTR bstrText = ::SysAllocStringLen(L"Test",4); 
BSTR bstrText = ::SysAllocStringByteLen("Test",4); 

  方法二,使用COleVariant或_variant_t。例如: 

//COleVariant strVar("This is a test"); 
_variant_t strVar("This is a test"); 
BSTR bstrText = strVar.bstrVal; 

  方法三,使用_bstr_t,这是一种最简单的方法。例如: 

BSTR bstrText = _bstr_t("This is a test"); 

  方法四,使用CComBSTR。例如: 

BSTR bstrText = CComBSTR("This is a test"); 

  或 

CComBSTR bstr("This is a test"); 
BSTR bstrText = bstr.m_str; 

  方法五,使用ConvertStringToBSTR。例如: 

char* lpszText = "Test"; 
BSTR bstrText = _com_util::ConvertStringToBSTR(lpszText); 

  (5) CString转换成BSTR 

  通常是通过使用CStringT::AllocSysString来实现。例如: 

CString str("This is a test"); 
BSTR bstrText = str.AllocSysString(); 
… 
SysFreeString(bstrText); // 用完释放 

  (6) BSTR转换成CString 

  一般可按下列方法进行: 

BSTR bstrText = ::SysAllocString(L"Test"); 
CStringA str; 
str.Empty(); 
str = bstrText; 

  或 

CStringA str(bstrText); 

  (7) ANSI、Unicode和宽字符之间的转换 

  方法一,使用MultiByteToWideChar将ANSI字符转换成Unicode字符,使用WideCharToMultiByte将Unicode字符转换成ANSI字符。 

  方法二,使用“_T”将ANSI转换成“一般”类型字符串,使用“L”将ANSI转换成Unicode,而在托管C++环境中还可使用S将ANSI字符串转换成String*对象。例如: 

TCHAR tstr[] = _T("this is a test"); 
wchar_t wszStr[] = L"This is a test"; 
String* str = S”This is a test”; 

  方法三,使用ATL 7.0的转换宏和类。ATL7.0在原有3.0基础上完善和增加了许多字符串转换宏以及提供相应的类,它具有如图3所示的统一形式: 

  其中,第一个C表示“类”,以便于ATL 3.0宏相区别,第二个C表示常量,2表示“to”,EX表示要开辟一定大小的缓冲。SourceType和DestinationType可以是A、 T、W和OLE,其含义分别是ANSI、Unicode、“一般”类型和OLE字符串。例如,CA2CT就是将ANSI转换成一般类型的字符串常量。下面是一些示例代码: 

LPTSTR tstr= CA2TEX<16>("this is a test"); 
LPCTSTR tcstr= CA2CT("this is a test"); 
wchar_t wszStr[] = L"This is a test"; 
char* chstr = CW2A(wszStr); 

  六、结语 

  几乎所有的程序都要用到字符串,而Visual C++.NET由于功能强大、应用广泛,因而字符串之间的转换更为频繁。本文几乎涉及到目前的所有转换方法。当然对于.NET框架来说,还可使用Convert和Text类进行不同数据类型以及字符编码之间的相互转换。

MFC与数值算法实践:一元N次方程求解器的完整开发指南 数值计算是计算机科学解决复杂数学问题的核心技术,其原理在于通过迭代逼近等算法将连续数学问题离散化求解。在工程实践中,数值算法的价值在于为科学计算、工程仿真和数据分析提供可靠工具,广泛应用于金融建模、图形渲染和机器学习等领域。本文聚焦于牛顿迭代法这一经典数值算法,结合MFC框架进行桌面应用开发,详细展示了从算法设计到界面集成的全流程。通过解析多项式求根的盛金公式与牛顿法实现,深入探讨了浮点数精度处理、初始值选取等工程细节,为C++桌面应用开发和遗留系统维护提供了实用参考。 阅读详情

相关推荐

VC++常用数据类型及其操作详解(非常经典)

数据类型的处理与转换,是在开发过程中必需要面对的,VC++数据类型多而杂,处理起来是非常棘手的。

字符串转换

  一、BSTR、LPSTR和LPWSTR  在Visual C++.NET的所有编程方式中,我们常常要用到这样的一些基本字符串类型,如BSTR、LPSTR和LPWSTR等。之所以出现类似上述的这些数据类型,是因为不同编程语言之间的数据交换以及对ANSI、Unicode和多字节字符集(MBCS)的支持。  那么什么是BSTR、LPSTR以及LPWSTR呢?  BSTR(Basic ...

weixin_33912445的博客 319

基于PaddleX的垃圾分类识别

基于PaddleX的智能垃圾分类识别项目,使用百度开源的PaddlePaddle深度学习框架,结合PaddleX开发套件,实现对垃圾分类的识别检测

Mefishes的博客 8119

VC常用的数据类型

作者:cy757 转自:http://blog.csdn.net/cy757/article/details/2785192   数据类型 意义 BOOL Boolean值(TRUE or FALSE) BSTR 32-bit字符指针 BYTE 8-bit整数,无正负号

老瓦的笔记本 704

基于知识图谱的旅游推荐系统

这一系统整合了当今先进的数据技术:采集携程等大型平台的景点数据,通过爬虫技术源源不断地获取最新的旅游信息。此外,我们采用Neo4j图数据库来存储和处理这些数据,结合自然语言处理技术,为你提供精准的旅游建议。:通过直观的知识图谱展示,了解各个景点之间微妙的联系,无论是文化背景还是地理方位,你都能从中发现新的旅行灵感。准备毕业设计的同学,关注我们,这是一个集成了多种前沿技术的项目,为你的学术成果锦上添花。:不再浪费时间,系统根据你的偏好和历史评分,利用协同过滤技术推荐适合的旅游目的地。

qalangtao的博客-qalangtao.com 773

【Windows Server 2019】发布服务器 | 远程桌面服务的安装与配置 Ⅰ——理论,实验拓扑和安装基于RemoteAPP的RDS

博客介绍了Windows Server中远程桌面服务的理论,实验拓扑以及基于RemoteAPP的RDS安装。博文介绍了如何在Windows Server上部署发布服务器。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 6128

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

VC常用数据类型及使用转换详解 一、常用数据类型列表VC常用数据类型列表(1)   Type Default Size

chen_xiansheng的专栏 951

SAP_SD模块 物料科目分配/成本简介

路径:SPRO—销售与分销—基本功能—科目分配/成本—收入账户确定—收入科目确定相关性—定义并分配科目代码—定义科目代码。路径:SPRO—销售与分销—基本功能—科目分配/成本—收入账户确定—收入科目确定相关性—定义访问顺序和科目确定类型。路径:SPRO—销售与分销—基本功能—科目分配/成本—收入账户确定—收入科目确定相关性—定义并分配科目确定过程。文本主要说明销售模块中的科目分配和成本的一个对应关系。SPRO—销售与分销—基本功能—科目分配/成本—收入账户确定—检查科目分配的相关主数据。

我小时候很黑的博客 2617

VC中常用的数据类型

ATOM     原子(原子表中的一个字符串的参考) BOOL     布尔变量 BOOLEAN     布尔变量 BYTE     字节(8位) CCHAR     Windows 字符 CHAR     Windows字符 COLORREF    红、绿、蓝(RGB)彩色值(32位) Const     变量,该变量的值在执行期间保持为常量 CRITICAL_SECTION  

贝壳紫铃专栏 1054

RTX6000 PRO BLACKWELL 最优 CUDA 版本选择指南(适配 vLLM/SGLang 大模型推理)

本文针对NVIDIA Blackwell架构RTX6000PRO显卡部署vLLM/SGLang大模型推理引擎时的CUDA版本选择问题,提出专业建议。分析表明,CUDA12.9(需搭配552.06+驱动)是最优选择,因其完全支持BW架构特性,且与vLLM/SGLang最新版本深度适配。文章提供详细的Linux环境部署教程,包括驱动升级、CUDA12.9安装及vLLM/SGLang配置步骤,并指出CUDA13.0目前适配不完善,不推荐新手使用。最后给出常见问题解决方案,强调版本匹配对推理性能和稳定性的重要性。

2501_93651177的博客 681

PoP(Package on Package)封装技术探讨

PoP(Package on Package)封装技术摘要 PoP是一种3D封装技术,通过垂直堆叠已完成封装的器件(如SoC+DRAM)实现高密度集成,典型应用于智能手机等空间受限场景。其核心优势包括:节省主板面积(垂直堆叠)、优化高速信号完整性(短互连路径)、提升供应链灵活性(独立测试与选型)。PoP结构分为底封装(通常为Flip-Chip BGA的SoC)和顶封装(如FBGA存储芯片),通过焊球阵列互连,一次回流焊完成组装。

sinat_15150363的博客 367

CString与LPCWSTR、LPSTR、char*、LPWSTR等类型的转换【转】

CString与LPCWSTR、LPSTR、char*、LPWSTR等类型的转换 VC++ 2010-09-25 21:23:12 阅读457 评论3   字号:大中小 订阅 一.CString与LPCWSTR      两者的不同:LPCWSTR 是Unicode字符串指针,初始化时串有多大,申请空间就有多大,以后存贮若超过则出现无法预料的结果,这是它与CString的不同之处

u014230987的专栏 469

AUTOSAR进阶图解==>AUTOSAR_SWS_CANNetworkManagement

本文介绍了AUTOSAR架构中的CAN网络管理(CanNm)模块,主要内容包括: 模块概述:CanNm是协调CAN网络节点状态转换的基础组件,采用去中心化设计,通过周期性发送网络管理PDU保持网络活跃状态,支持网络唤醒、睡眠和部分网络功能。 架构设计:CanNm位于AUTOSAR中间层,连接上层通信管理器(ComM)和底层CAN接口(CanIf),包含状态管理、PDU处理和定时器管理等子组件。 状态机设计:定义了三种主要模式(总线睡眠、准备睡眠和网络模式)及其转换逻辑,网络模式又包含重复消息、正常操作和准备

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 2040

C#为何成为2002年开发者的技术破局点

面向对象编程(OOP)作为软件工程核心范式,其落地长期受限于语法抽象与工程实践的鸿沟;GUI开发则因操作系统API复杂、工具链割裂而成为初学者难以逾越的断层。在硬件资源匮乏、教学体系滞后、IDE响应迟缓的早期开发环境中,C#凭借确定性资源管理(using语句)、封装完备的WinForms类库、以及Visual Studio .NET的智能感知与重构能力,将OOP从理论概念转化为可快速验证的工程实践。它不追求语言学上的极致优雅,而是以降低学习成本、缩短反馈周期、规避内存与异常陷阱为技术价值,支撑起桌面应用、课

diaojin6880的博客 400

2025届程序技术类笔试题

希尔排序在直接插入排序的基础上进行了改进,它通过比较相距一定间隔的元素来进行,各轮比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一轮排序为止。某人逆着水流的方向向岸边划船,每次行进前进x米后需要休息一下,休息期间船会自行倒退y米,每次休息后再次行进,前进距离缩短1/5,若起始距离岸边为m米,问:能否到达岸上,需要行进多少次才能上岸。直接插入排序的原理是将第i个元素插入前面i-1个已排好序的记录中,将比第i个元素大的记录依次向后移动一个位置,将第i个元素插入空位。第二轮相邻比较,后移2次。

博客 591

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C++与MFC实现24点游戏:算法、界面与工程实践详解

在桌面应用开发中,理解图形用户界面(GUI)与核心算法的结合是提升工程能力的关键。GUI程序通过事件驱动模型响应用户操作,其核心在于消息循环与界面控件的交互。C++因其高性能和底层控制能力,常被用于实现需要复杂计算逻辑的模块,如游戏算法或数学求解引擎。将算法模块与界面层解耦,不仅能提高代码可维护性,也是软件工程中的常见实践。以经典的24点游戏为例,其核心求解引擎涉及排列组合、递归回溯与浮点数精度处理,而MFC框架则提供了构建Windows桌面界面的成熟方案。通过这一具体项目,开发者可以深入掌握从算法设计、精

weixin_34348174的博客 332

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

VC6环境下GDI+图形编程实战:从环境配置到图像处理

图形设备接口(GDI)是Windows平台图形编程的基础技术,它提供了在屏幕上绘制图形、文本和处理图像的核心功能。GDI+作为GDI的增强版本,引入了面向对象的编程模型,支持抗锯齿、渐变填充和多种图像格式处理,显著提升了图形渲染的质量和开发效率。在工程实践中,GDI+的面向对象设计使得绘图资源(如画笔、画刷)更易于管理和复用,其原生支持PNG、JPEG等现代图像格式的特性,解决了传统GDI对图像处理支持不足的痛点。这些技术价值使其在需要高质量图形输出的桌面应用、图表绘制工具和图像查看器等场景中具有广泛应用。

weixin_34357928的博客 429

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

BSTR 值与 char *的转换

将char *值转换为BSTRVS提供的编译器 COM 全局函数有相关API,此处仅以记录,方便查阅。 Header:<comutil.h> Lib:comsuppw.lib or comsuppwd.lib 将BSTR值转换为char *:ConvertBSTRToString // ConvertBSTRToString.cpp #include <comutil.h> #include <stdio.h> #pragma comment(...

1334

VC几种数据类型详解

一、BSTR、LPSTR和LPWSTR   在Visual C++.NET的所有编程方式中,我们常常要用到这样的一些基本字符串类型,如BSTR、LPSTR和LPWSTR等。之所以出现类似上述的这些数据类型,是因为不同编程语言之间的数据交换以及对ANSI、Unicode和多字节字符集(MBCS)的支持。   那么什么是BSTR、LPSTR以及LPWSTR呢?   BSTR(Basic ST

冷秋魂的专栏 1393

C++使用VARIANT实现二维数组的操作

VARIANT变量是COM组件之间互相通信的重要的参数变量之一,它可以容纳多种不同的类型,如short、long、double等,包括各类指针和数组。组件之间的互相调用是比较耗时的,尤其带当组件位于不同进程中时,因此,减少传递次数是提高效率的一种有效方法。其中,Excel表格的操作就可能涉及到大量数据,一次传递一个二维数组是提高对Excel表的操作效率。下面以两种不同方式来实现VARIA...

weixin_30545285的博客 513

C++任意数值类型转string

#include<iostream> #include<sstream> using namespace std; template<class T> string ToString(T value) { stringstream strstream; strstream.str(""); strstream << val...

644

【转】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应的用程序中 TCHAR * p = _T

IT民工 1万+

数据类型转换(一)BSTR Char*

#include //BSTR 转换到 char*: char* p = _com_util::ConvertBSTRToString(b); //char * 转换到 BSTR: BSTR b = _com_util::ConvertStringToBSTR("string"); 

redpetallsg的专栏 630

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

刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。我们先定义一些常见类型变量借以说明inti=100;longl=2001;floatf=300.2;doubled=12345.119;charusername[]="程";chartemp[200];char*buf;CStringstr;_varia...

adqk62684的博客 224

c语言vc数据类型长度,vc++数据类型

vc数据类型分基本数据类型和扩展(特有)数据类型,现整理下,为了记忆,也为了开发过程中进行查阅,必竟人脑不是电脑,会有遗忘的过程。一、基本数据类型主类型分类型修饰符占用空间表示范围Integerintshort2 bytes-32768~32768long4 bytes-231~(231-1)Unsigned short2 bytes0~65535Unsigned long4 bytes0~(23...

weixin_28900461的博客 732
上一篇: 引用和指针
下一篇: Content Provider
ihust
博客等级 码龄16年 10粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值