vc++中类型转化
来源:互联网 发布:cf冰龙刷枪软件 编辑:程序博客网 时间:2024/05/22 11:44
在开发中经常会遇到类型不匹配的问题,这里在网上搜集了些资料做了整理,以便以后使用,在不断更新中。。。
1、string to CString
CString str.format("%s",string.c_str());
2、CString to string
string str(CString.GetBuffer(str.GetLength()));
或
string str=(LPCTSTR)CString;
3、string to char *
char *p=string.c_str();
4、char * to string
string str(char*);
5 、CString与char*相互转换举例
CString strValue(“Hello”);
char *szValue;
szValue=strValue.GetBuffer(szValue);
也可用(LPSTR)(LPCTSTR)对CString// 进行强制转换.
szValue=(LPSTR)(LPCTSTR)strValue;
反过来可直接赋值:
char *szChar=NULL;
CString strValue;
szChar=new char[10];
memset(szChar,0,10);
strcpy(szChar,”Hello”);
strValue=szChar;
6、const char* to char*
const char* y="1111";
char *p = new char[strlen(y)+1];
strcpy(p,y);
7、string to const char*
string s="strte";
const char* r=s.c_str();
8、char* to string
string s(char *);
9、CString to 数学类型
eg:CString str="123"; int i;double d;long l;
i=atoi(str);
d=atof(str);
l=atol(str);
10、数学类型to CString
可用Format函数,举例:
CString s;
int i = 64;
s.Format("%d", i)
11、CString 与 BSTR 型转换
CString 型转化成 BSTR 型
当我们使用 ActiveX 控件编程时,经常需要用到将某个值表示成 BSTR 类型.BSTR 是一种记数字符串,Intel平台上的宽字符串(Unicode),并且可以包含嵌入的 NULL 字符。
可以调用 CString 对象的 AllocSysString 方法将 CString 转化成 BSTR:
CString str;
str = .....; // whatever
BSTR bStr = str.AllocSysString();
BSTR型转换为CString
如果你在 UNICODE 模式下编译代码,你可以简单地写成:
CString convert(BSTR bStr)
{
if(bStr == NULL)
return CString(_T(""));
CString s(bStr); // in UNICODE mode
return s;
}
如果是 ANSI 模式
CString convert(BSTR b)
{
CString s;
if(b == NULL)
return s; // empty for NULL BSTR
#ifdef UNICODE
s = b;
#else
LPSTR p = s.GetBuffer(SysStringLen(b) + 1);
::WideCharToMultiByte(CP_ACP, // ANSI Code Page
0, // no flags
b, // source widechar string
-1, // assume NUL-terminated
p, // target buffer
SysStringLen(b)+1, // target buffer length
NULL, // use system default char
NULL); // don''t care if default used
s.ReleaseBuffer();
#endif
return s;
}
12、VARIANT 型转化成 CString 型
VARIANT 类型经常用来给 COM 对象传递参数,或者接收从 COM 对象返回的值。你也能自己编写返回 VARIANT 类型的方法,函数返回什么类型 依赖可能(并且常常)方法的输入参数(比如,在自动化操作中,依赖与你调用哪个方法。IDispatch::Invoke 可能返回(通过其一个参数)一个 包含有BYTE、WORD、float、double、date、BSTR 等等 VARIANT 类型的结果,(详见 MSDN 上的 VARIANT 结构的定义)。
CString VariantToString(VARIANT * va)
{
CString s;
switch(va->vt)
{ /* vt */
case VT_BSTR:
return CString(vaData->bstrVal);
case VT_BSTR | VT_BYREF:
return CString(*vaData->pbstrVal);
case VT_I4:
s.Format(_T("%d"), va->lVal);
return s;
case VT_I4 | VT_BYREF:
s.Format(_T("%d"), *va->plVal);
case VT_R8:
s.Format(_T("%f"), va->dblVal);
return s;
//剩下的类型转换由读者自己完成
default:
ASSERT(FALSE); // unknown VARIANT type (this ASSERT is optional)
return CString("");
} /* vt */
}
13、VARIANT变量的使用
VARIANT va;
int a=123;
va.vt=VT_I4;///指明整型数据
va.lVal=a; ///赋值
14、BSTR、_bstr_t与CComBSTR
CComBSTR、_bstr_t是对BSTR的封装,BSTR是指向字符串的32位指针。
char *转换到BSTR可以这样:
BSTR s=_com_util::ConvertStringToBSTR("数据");///使用前需要加上头文件comutil.h
反之 char *p=_com_util::ConvertBSTRToString(s);
- vc++中类型转化
- VC中char* 转化为CString类型
- VC中类型的相互转化
- VC中类型的相互转化(转)
- VC中类型的相互转化(转)
- VC中类型的相互转化
- VC中类型的相互转化
- VC中类型的相互转化
- VC中类型的相互转化
- vc中的类型转化
- VC++类型转化
- VC++中DEBUG的一个无法类型转化的问题
- c++中类型转化
- C++中类型转化
- DWR中转化Map类型
- c++中类型的转化
- Java中类型转化问题
- VC中类型转换
- OC之Block块语法
- oracle 导入导出
- 针对SecurityException的处理方式
- 远程注入手段 及 内存操作
- cocoapods sources
- vc++中类型转化
- 设计模式:Java 建造者模式(Builder)
- Java正则表达式的语法与示例
- 用步进正弦激励法测量计算机声卡输出输入幅值频响函数
- [转载]复杂网络资源
- 怎么下载微信或优酷等网站的视频
- javafx fxml form javascript css Example
- AndroidManifest.xml文件详解(uses-feature)
- Spring_Security_3.0.1 中文参考文档chapter 6 核心服务