已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
. char *转换到BSTR BSTR b = _com_util:ConvertStringToBSTR(数据); SysFreeString(bstrValue); (2).BSTR转换到char* char *p=_com_util:ConvertBSTRToString(b); delete p; 12.typedef和typename要害字 这两个要害字在运用的时辰时例会令人迷惑,其实很简单,typedef是类型定义, 而typename是类型解释2009年04月20日类型转换是将一种类型的值映射为另一种类型的值进行数据类型的转换 是在实际代码编写中经常遇到的问题,出格是字符串和其它类型的转换 1.将字符串转换为整儿 (1).转换函数 / 双精度函数 double atof( const char *string ); double _wtof( const wchar_t *string ); 自适应 TCHAR: _tstof 、 _ttof VS2005:_atof_l 、_wtof_l 、 _atodbl 、 _atodbl_l / 整型函数 int atoi( const char *string ); _int64 _atoi64( const char *string ); int _wtoi( const wchar_t *string ); _int64 _ wtoi64( const char *string ); 自适应 TCHAR:_tstoi 、 _ttoi 、_tstoi64 、_ttoi64 VS2005:_atoi_l 、 _wtoi_l 、_atoi64_l 、_wtoi64_l /长整形函数 long atol( const char * string ); long _wtol( const wchar_t *string ); 自适应 TCHAR:_tstoi 、_ttoi VS2005:_atoi_l 、_wtoi_l 可参考:/s/blog_4135af570100b0d9.ht ml (2).代码参考 Cstring ting =1234; int num = atoi(ting); num的值为1234. CString ting = 1234 ; double num = atof(ting); 最终结果:num值为 1234.0000000000000 2.int 转换为字符串 cahr *_itoa( int value, char *string, int radix ); char *_i64toa( _int64 value, char *string, int radix ); char * _ui64toa( unsigned _int64 value, char *string, int radix ); wchar_t * _itow( int value, wchar_t *string, int radix ); wchar_t * _i64tow( _int64 value, wchar_t *string, int radix ); wchar_t * _ui64tow( unsigned _int64 value, wchar_t *string, int radix ); 参数的意义:value 是指要转换的整儿,sring 是用来存放转换后结果的便当, radix是用来说明转换成几进制的数据,默认值是十进制数的 转换的进制范围是二进制到三十六进制 示例代码: int iii = 123456789; char ii100; itoa(iii, ii, 10); ii 中的结果就是字符串123456789 int iii = 12; char ii100; itoa(iii, ii, 2); ii 中的结果是字符串1100 3.long 转换为字符串 char *_ltoa( long value,char *string, int radix ); wchar_t *_ltow( long value, wchar_t *string, int radix ); 其中,参数 value 为被转换的值,参数string为字符串缓冲区,radix为进制 代码参考: ling l = 100; char temp10; memset(temp,0,10); ltoa(l,temp,10); 4.double 转换为字符串 char *_fcvt( double value, int count, int *dec, int *sign ); 其中参数value 为双精度数,参数count为转换的小数点后面的位数,dec表示小数点的位置, sign 表示符号代码参数如下 int decimal, sign; char *buffer; dobule source = 3.1415926535; buffer = _fcbt( source, 7, &decimal, &sign ); 输出结果:sourec:3.1415926535; buffer:31415927 decimal: 1 sign:0 5.日期类型转换为字符串 将一日期格式转换为字符串,利用了格式化函数,参考代码如下: CTime ti = Ctime:GetCurrentTime(); Cstring strTemp(); strTemp = ti.Format(%Y%m%d %H%H%S) 6.字符串转换为短整型 int atoi( const char *string ); 其中,参数 const char *string为要转换的字符串,返回值为转换的结果 7.字符串转换为长整型 long atol(const char * string) 8.字符串转换为双精度类型 double atof(const char* string) 代码参考: #include #include void main( void ) char *s; dobule x; int i; long l; s = -2309.12E-15; / 测试atof x = atof(s); printf( atof test:ASCII string: %stfloat: %en, s , x ); s= 7.8912654773d210; / 测试atof x = atof(s); printf( atof test: ASCII string: %stfloat: %en, s, x); s = -9885 pigs; / 测试atoi i = atoi(s); printf( atoi test:ASCII string:%sttinteger: %dn, s, i); s = 98854 dollars; / 测试atol l = atol(s); printf( atoi test:ASCII string:%sttlong: %ldn, s, l); 输出结果: atof test:ASCII string: -2309.12E-15 float:-2.309120e-012 atof test:ASCII string: 7.8912654773d210 float:7.891265E+210 atof test:ASCII string: -9885 pigs integer:-9885 atof test:ASCII string: 98854 dollars long:98854 9. char*和CString的相互转换 CString 饱含了三个值:指向某个数据缓冲区的指针、该缓冲区中有用的字符记数 (它是不可存取的,是位于CString 地址之下的1个隐藏地区范围)及1个缓冲区长度 有用字符数的巨细可所以从0到该缓冲最大长度值减1之间的任何数(因为字符串结尾有1个灭茬字符) char* 转换为 CString 直接赋值 利用格式化转换 CString strConvert; TCHAR* P = _T(this is a chTostring test ); strConvert = p; / 直接赋值 strConvert.Format(%s,p); / 格式化 (2) CString 转换为 char* 强制类型转换为LPCTSTR CString theString(_T(Char test ); LPTSTR lpsz = (LPTSTR) (LPCTSTR)theString; 使用strcpy CString theString( (_T(Char test ); LPTSTR lpsz = new TCHARtheString.GetLength()+1; _tcscopy(lpsz, theSting); 需要说明的是, strcpy(或可移植的_tcscpy)的第二参数是const wcahr_t*(Unicode) 或const char*(ANSI),系统编译器将会自己主动对其进行转换 使用GetBuffer 要是需要修改CString中的内部实质意义,它有1个特殊的方法可以使用,哪就是GetBuffer, 它的作用是返回1个可写的缓冲指针要是只是筹算修改字符或者截短字符串, 例如: CString s(_T(Char test ); LPTSTR p = s.GetBuffer(); / 添加P的代码 s.ReleaseBuffer() / 使用完后实时开释 10.CString与BSTR的相互转换 (1).CString 转换为 BSTR 挪用CString 对象的AllocSysString 方法将CString转化成BSTR,如: CString str = this is a test ; BSTR b = str.AllosysString(); str.FreeSystring(); / 最后不要忘记了开释 (2).BSTR转换为CString CString convert(BSTR b) CString s; if(b = 灭茬) return s; #ifdef UNICODE s = b; #else LPSTR p = s.GetBuffer(SYsStringLen(b) + 1); :WidecharToMultiByte(CP_ACP, 0, b, -1, p, SysStringLen(b)+1, 灭茬, 灭茬); s.ReleaseBuffer(); #endif return s; 11. BSTR、_bstr_t 与 CComBSTR的关系 CComBSTR是ATL对BSTR的封装,_bstr_t是C+对BSTR的封装, BSTR是32位指针,但并不是直接指向字符串的缓冲区 .typedef要害字 类型说明给已经存在的数据类型起1个体号,定义名字表示这个类型的新名字 类型说明的格式为typedef 类型 定义名; 例如,用下面语句定义整型数的新名字: typedef int INT_COUNT; / 可读性更强(计数器类型为整型) INT_COUNT intcount; intCount = 123; cout intCount fPrice = 40.80; myBook - szAuthor = jf; myBook - npage = 200; (2).typename 要害字 typename和class用在模版定义开始部分时,它们的意义相同,但tpyename是用来 告诉编译器模版中有1个表示类型名 Templatecalss fun Void bar() T:Bletch * p; . . 在上面所说的代码中,T:Bletch * p是指啥子,这一点儿就很让人迷惑但要是写成这样就不会 呈现这个问题: Template class fun Void bar() Typename T:Bletch * p; 在模版定义里,也能够用取代,即 template与 templare具有相同意义 13.VARIANT的处理技巧 1.VARIANT的定义 VARIANT被称为变体类型,其定义可以参考头文件VC98INCLUDEOAIDL.H 关于结构体 tagVARIANT定义 2.引入VARIANT的缘故原由 目前计算机语言多种多样,如C+、java、Basic、Pascal等,它们各自又都有自己的 数据类型,VARIANT数据类型就具有跨语言的特性,同时它可以表示(储存)任意类型 的数据从C语言的角度来讲,VARIANT其实是1个结构,结构顶用1个域(vt)表示,同时 正真的数据则存储在union空间中 3.VARIANT的应用 利用VARIANT表示可1个整型数据: VARIANT va; int a=2001; va.vt = VT_I4; / 指明整型数据 va.lVal=a; / 赋值 利用VARIANT表示1个布尔值: VARIANT va; vb.vt = VT_BOOL; / 指明整型数据 va.boolVal = VARIANT_TRUE; / 赋值 利用VARIANT生存1个字符串: VARIANT va; va.vt = VT_BSTR; va.bstrVal = SysAllocString(LHello,this is a test
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- IEA发布世界能源展望预测LNG产能有望持续增长
- AI赋能资产配置:AI预测股价指南以TrendIQ为例
- 2026年电焊工安全操作证考试理论知识模拟卷
- 消防安全管理制度汇编
- 未来五年古生物遗迹保护区管理服务企业ESG实践与创新战略分析研究报告
- 未来五年船舶修理企业数字化转型与智慧升级战略分析研究报告
- 未来五年地质钻探机企业数字化转型与智慧升级战略分析研究报告
- 未来五年增湿造粒机企业ESG实践与创新战略分析研究报告
- 未来五年短条及细枝等企业ESG实践与创新战略分析研究报告
- 2025年洛阳师范学院招聘真题(行政管理岗)
- 项目二 模块四 波音737-800飞机乘务员控制面板及娱乐系统的操作方法课件讲解
- 2022年新疆维吾尔自治区新疆生产建设兵团中考数学试题(无答案)
- 游戏你来比划我来猜的PPT
- 福建省福州市2023-2024学年高一上学期期末考试物理试卷2
- 钢结构生产工艺流程
- 译林版英语六年级上册第八单元ChineseNewYear课件
- 2022-2023学年四川省宜宾市高一(下)期末数学试卷(含解析)
- 教你填《广东省普通高中学生档案》精编版
- 大学生兼职家教个人简历
- 转动极板技术简介
- 《人类行为与社会环境》课件
评论
0/150
提交评论