VC字符串转换常用函数
来源:互联网 发布:linux常用命令cd 编辑:程序博客网 时间:2024/06/05 01:14
最近在做一些关于VC的ActiveX小插件,经常会遇到字符串处理的问题,狂查CSDN和MSDN,结果并不理想。先说明一下,相关处理函数在VC++6.00测试通过。也许很多人不能理解,现在都什么年代了,还用VC6.0,其实VC开发插件有一个好处就是部署的时候方便一些,不用考虑浏览器端用户是否安装了.net Framework。那个.net Framework随着推出新版本越来越大,要让用户花那么多时间去安装那个庞然大物,而实际用到的东西却很少很少,这样很多人会不干的。另外,服务端的是java开发的,要加上.net更加不可能。因此,VC开发的东西就不用担心这些东西。说多了。。。。。
在VC编程中经常会遇到字符串转化的问题,现在做一下总结,以方便以后使用。
(1) char*转换成CString
若将char*转换成CString,除了直接赋值外,还可使用CString::Format进行。例如:
char chArray[] = "Char test";
TCHAR * p = _T("Char test");( 或LPTSTR p = _T("Char test");)
CString theString = chArray;
theString.Format(_T("%s"), chArray);
theString = p;
(2) CString转换成char*
若将CString类转换成char*(LPSTR)类型,常常使用下列三种方法:
方法一,使用强制转换。例如:
CString theString( (_T("Char test "));
LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString;
方法二,使用strcpy。例如:
CString theString( (_T("Char test "));
LPTSTR lpsz = new TCHAR[theString.GetLength()+1];
_tcscpy(lpsz, theString);
需要说明的是,strcpy(或可移值的_tcscpy)的第二个参数是 const wchar_t* (Unicode)或const char*
(ANSI),系统编译器将会自动对其进行转换。
方法三,使用CString::GetBuffer。
如果你需要修改 CString 中的内容,它有一个特殊的方法可以使用,那就是 GetBuffer,它的作用是返回一个可写的缓冲指针。
如果你只是打算修改字符或者截短字符串,例如:
CString s(_T("Char test "));
LPTSTR p = s.GetBuffer();
LPTSTR dot = strchr(p, ''.'');
// 在这里添加使用p的代码
if(p != NULL)
*p = _T('\0');
s.ReleaseBuffer(); // 使用完后及时释放,以便能使用其它的CString成员函数
在 GetBuffer 和 ReleaseBuffer 之间这个范围,一定不能使用你要操作的这个缓冲的 CString 对象的任何方法。因为
ReleaseBuffer 被调用之前,该 CString 对象的完整性得不到保障。
其他常规转换
先定义一些常见类型变量借以说明
int i = 100;
long l = 2001;
float f=300.2;
double d=12345.119;
char username[]="xx";
char temp[200];
char *buf;
CString str;
一、其它数据类型转换为字符串
短整型(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位指针。
char *转换到BSTR可以这样: BSTR
b=_com_util::ConvertStringToBSTR("数据");
//使用前需要加上头文件comutil.h
反之可以使用char *p=_com_util::ConvertBSTRToString(b);
六、variant转化为CString
VariantToString(_variant_t varValue)
{
if(varValue.vt!=VT_BSTR)
{
varValue.ChangeType(VT_BSTR);
}
return (char*)_bstr_t(varValue.bstrVal);
}
注意:加上头文件 #include "comdef.h"
Variant 转化为Long方法
VariantToLong(
const
VARIANT &var)
{
long
r;
switch
(var.vt)
{
case
VT_UI2:
//USHORT
r = var.uiVal;
break
;
case
VT_UI4:
//ULONG
r = var.ulVal;
break
;
case
VT_INT:
//INT
r = var.intVal;
break
;
case
VT_UINT:
//UINT
r = var.uintVal;
break
;
case
VT_I4:
//LONG
r = var.lVal;
break
;
case
VT_UI1:
//BYTE
r = var.bVal;
break
;
case
VT_I2:
//SHORT
r = var.iVal;
break
;
case
VT_R4:
//FLOAT
r = (
long
)var.fltVal;
break
;
case
VT_R8:
//DOUBLE
r = (
long
)var.dblVal;
break
;
default
:
r = -1;
//无法转换该值
break
;
}
return
r;
}
- VC字符串转换常用函数
- VC++常用字符串转换函数
- VC字符串转换常用函数
- VC常用字符串函数
- VC中char,wchar_t,TCHAR及相应字符串处理函数辨析(附常用数据类型转换)
- VC字符串与整数、浮点数、无符号整数之间的转换常用函数
- VC 字符串和数字转换函数
- VC字符串转换成十六进制函数StrToIntEx
- vc字符串处理函数,gbk utf8互相转换,分割字符串
- C语言常用字符串及转换函数
- linux常用c函数 字符串转换篇
- 常用字符串编码转换的函数
- Linux常用C函数—字符串转换
- Linux常用C函数-字符串转换篇
- c-常用的字符串转换函数
- linux常用c函数字符串转换篇
- Linux常用C函数---字符串转换篇
- Linux常用C函数-字符串转换篇
- Ecshop如何去掉页面标题及版权信息
- U盘安装veket随身系统
- Web HTML文本编辑器 汇总
- springMVC教程(五)将controller中数据传递到jsp页面
- JS在各个浏览器中执行的超时时间
- VC字符串转换常用函数
- jquery-easyui-1.3.6不兼容ie问题
- LeetCode——Add Binary
- 下拉刷新和上拉加载的原理
- IIS故障问题(Connections_Refused)分析及处理
- springMVC教程(六)设置跳转方式为重定向或者转发
- 软件设计全程演练与最佳实践
- 广东佛山市委书记:说公务员太难当 你可以辞职
- Android之实现系统联系人软件的分组和字母提示效果