




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、其它数据类型转换为字符串 短整型(int)itoa(i,temp,10);/将i转换为字符串放入temp中,最后一个数字表示十进制itoa(i,temp,2); /按二进制方式转换 长整型(long)ltoa(l,temp,10); 浮点数(float,double)用fcvt可以完成转换,这是MSDN中的例子:int decimal, sign; char *buffer; double source = 3.1415926535; buffer = _fcvt( source, 7, &decimal, &sign ); 运行结果:source: 3.1415926535 buffer: 31415927 decimal: 1 sign: 0decimal表示小数点的位置,sign表示符号:0为正数,1为负数 CString变量str = 2008北京奥运;buf = (LPSTR)(LPCTSTR)str; BSTR变量BSTR bstrValue = :SysAllocString(L程序员); char * buf = _com_util:ConvertBSTRToString(bstrValue); SysFreeString(bstrValue); AfxMessageBox(buf); delete(buf); CComBSTR变量CComBSTR bstrVar(test); char *buf = _com_util:ConvertBSTRToString(bstrVar.m_str); AfxMessageBox(buf); delete(buf); _bstr_t变量_bstr_t类型是对BSTR的封装,因为已经重载了=操作符,所以很容易使用_bstr_t bstrVar(test); const char *buf = bstrVar;/不要修改buf中的内容 AfxMessageBox(buf); 通用方法(针对非COM数据类型)用sprintf完成转换char buffer200;char c = 1;int i = 35;long j = 1000;float f = 1.7320534f;sprintf( buffer, %c,c);sprintf( buffer, %d,i);sprintf( buffer, %d,j);sprintf( buffer, %f,f);二、字符串转换为其它数据类型strcpy(temp,123); 短整型(int)i = atoi(temp); 长整型(long)l = atol(temp); 浮点(double)d = atof(temp); CString变量CString name = temp; BSTR变量 BSTR bstrValue = :SysAllocString(L程序员); ./完成对bstrValue的使用SysFreeString(bstrValue); CComBSTR变量CComBSTR类型变量可以直接赋值CComBSTR bstrVar1(test);CComBSTR bstrVar2(temp); _bstr_t变量_bstr_t类型的变量可以直接赋值_bstr_t bstrVar1(test); _bstr_t bstrVar2(temp); 三、其它数据类型转换到CString使用CString的成员函数Format来转换,例如: 整数(int)str.Format(%d,i); 浮点数(float)str.Format(%f,i); 字符串指针(char *)等已经被CString构造函数支持的数据类型可以直接赋值str = username; 对于Format所不支持的数据类型,可以通过上面所说的关于其它数据类型转化到char *的方法先转到char *,然后赋值给CString变量。 四、BSTR、_bstr_t与CComBSTR CComBSTR 是ATL对BSTR的封装,_bstr_t是C+对BSTR的封装,BSTR是32位指针,但并不直接指向字串的缓冲区。char *转换到BSTR可以这样: BSTR b=_com_util:ConvertStringToBSTR(数据);/使用前需要加上comutil.h和comsupp.libSysFreeString(bstrValue); 反之可以使用char *p=_com_util:ConvertBSTRToString(b);delete p;具体可以参考一,二段落里的具体说明。CComBSTR与_bstr_t对大量的操作符进行了重载,可以直接进行=,!=,=等操作,所以使用非常方便。特别是_bstr_t,建议大家使用它。 五、VARIANT 、_variant_t 与 COleVariant VARIANT的结构可以参考头文件VC98IncludeOAIDL.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与常用数据的对应关系:Byte 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.DECIMAL FAR* pdecVal/ VT_BYREF|VT_DECIMAL.IUnknown FAR* punkVal;/ VT_UNKNOWN.IDispatch FAR* pdispVal;/ VT_DISPATCH.SAFEARRAY FAR* parray;/ VT_ARRAY|*.Byte 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;/ Generic ByRef.char cVal;/ VT_I1.unsigned short uiVal;/ VT_UI2.unsigned long ulVal;/ VT_UI4.int intVal;/ VT_INT.unsigned int uintVal;/ VT_UINT.char FAR * pcVal;/ VT_BYREF|VT_I1.unsigned short FAR * puiVal;/ VT_BYREF|VT_UI2.unsigned long FAR * pulVal;/ VT_BYREF|VT_UI4.int FAR * pintVal;/ VT_BYREF|VT_INT.unsigned int FAR * puintVal;/VT_BYREF|VT_UINT. _variant_t是VARIANT的封装类,其赋值可以使用强制类型转换,其构造函数会自动处理这些数据类型。使用时需加上#include 例如: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; 六、其它一些COM数据类型 根据ProgID得到CLSIDHRESULT CLSIDFromProgID( LPCOLESTR lpszProgID,LPCLSID pclsid);CLSID clsid;CLSIDFromProgID( LMAPI.Folder,&clsid); 根据CLSID得到ProgIDWINOLEAPI ProgIDFromCLSID( REFCLSID clsid,LPOLESTR * lplpszProgID); 例如我们已经定义了 CLSID_IApplication,下面的代码得到ProgIDLPOLESTR pProgID = 0;ProgIDFromCLSID( CLSID_IApplication,&pProgID);./可以使用pProgID CoTaskMemFree(pProgID);/不要忘记释放 七、ANSI与UnicodeUnicode称为宽字符型字串,COM里使用的都是Unicode字符串。 将ANSI转换到Unicode(1)通过L这个宏来实现,例如: CLSIDFromProgID( LMAPI.Folder,&clsid);(2)通过MultiByteToWideChar函数实现转换,例如:char *szProgID = MAPI.Folder;WCHAR szWideProgID128;CLSID clsid;long lLen = MultiByteToWideChar(CP_ACP,0,szProgID,strlen(szProgID),szWideProgID,sizeof(szWideProgID);szWideProgIDlLen = 0; (3)通过A2W宏来实现,例如: USES_CONVERSION; CLSIDFromProgID( A2W(szProgID),&clsid); 将Unicode转换到ANSI(1)使用WideCharToMultiByte,例如:/ 假设已经有了一个Unicode 串 wszSomeString. char szANSIString MAX_PATH; WideCharToMultiByte ( CP_ACP, WC_COMPOSITECHECK, wszSomeString, -1, szANSIString, sizeof(szANSIString), NULL, NULL ); (2)使用W2A宏来实现,例如:USES_CONVERSION;pTemp=W2A(wszSomeString); 八、其它 对消息的处理中我们经常需要将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位 两个16位数据(WORD)合成32位数据(DWORD,LRESULT,LPARAM,或WPARAM)LONG MAKELONG( WORD wLow, WORD wHigh );WPARAM MAKEWPARAM( WORD wLow, WORD wHigh ); LPARAM MAKELPARAM( WORD wLow, WORD wHigh );LRESULT MAKELRESULT( WORD wLow, WORD wHigh ); 两个8位的数据(BYTE)合成16位的数据(WORD)WORD MAKEWORD( BYTE bLow, BYTE bHigh ); 从R(red),G(green),B(blue)三色得到COLORREF类型的颜色值COLORREF RGB( BYTE byRed,BYTE byGreen,BYTE byBlue );例如COLORREF bkcolor = RGB(0x22,0x98,0x34); 从COLORREF类型的颜色值得到RGB三个颜色值BYTE Red = GetRValue(bkcolor); /得到红颜色BYTE Green = GetGValue(bkcolor); /得到绿颜色BYTE Blue = GetBValue(bkcolor); /得到兰颜色 九、注意事项假如需要使用到ConvertBSTRToString此类函数,需要加上头文件comutil.h,并在setting中加入comsupp.lib或者直接加上#pragma comment( lib, comsupp.lib )后记:本文匆匆写成,错误之处在所难免,欢迎指正.关于把BSTR类型数据转换成CString 类型数据时的问题?当我在把BSTR类型数据转换成CString 或 “char* 类型”数据时,发现在BSTR类型字符串较短的情况下没问题,当较长时就会出现内存读写错了。(在NT,2000下都测试是这样的。)根据你所说:1)字符串指针(char *)等已经被CString构造函数支持的数据类型 可以直接赋值 str = username;2)当b 为BSTR类型时可以使用char *p=_com_util:ConvertBSTRToString(b);于是以下是对的:CString cstr;BSTR bstr;.cstr=com_util:ConvertBSTRToString(bstr);.可是当bstr非常大时(其实,较大时就会)就会出现内存读写错,不知何故。此外我发现cstr=com_util:ConvertBSTRToString(bstr);可以简化为 cstr=bstr; 但当bstr较大时同样出现这个问题。请兄弟帮忙!急。谢谢!如何转化(list*)fileip.bian)-liang关于把CString转化成LPCTSTR的问题 作者:jakiesun 发表日期:2001-9-5 20:08:48我记的我以前写过这样一段代码void function()CString str,str1,str2;function(char*)(LPCTSTR)str1);str=str1;./调试道此发现str2的值随着str的改变而改变,请问能解释一下为什么,如有回答,请通知,tx先添加lib支持 作者:磨刀霍霍 发表日期:2001-9-10 11:32:12如果不添加会产生错误,在setting中加入comsupp.lib或者直接#pragma comment( lib, comsupp.lib )微软认为缺省的设置call convention如果不设置成_cdecl也会出现同样的错误。1。int 转成cstring ?回复人:caigzhi(caigzhi)(2001-10-17 11:27:35) 得0分 CString 的成员函数Format()int a = 2131;CString str;str.Format(%d,a);回复人:tenchi(C与C+之间)(2001-10-17 11:32:12) 得0分 int i=2001;char str10;_itoa(i,str,10);CString szString=str; 回复人:fiolin(幽深的水)(2001-10-17 11:45:40) 得0分 他们两个的都可以! 回复人:sohucsdnvc(thanks)(2001-10-17 13:24:17) 得0分 那如何把double转成cstring 回复人:yihugang(小虎子)(2001-10-17 13:29:15) 得6分 int i = 2131;char *c=new char20;CString str;sprintf(c,%d,i);str=*c;回复人:Gu_c_h(Gu)(2001-10-17 14:07:17) 得0分 用 _gcvt 下面是 msdn 的例子Example/* _GCVT.C: This program converts -3.1415e5* to its string representation.*/#include #include void main( void )char buffer50;double source = -3.1415e5;_gcvt( source, 7, buffer );printf( source: %f buffer: %sn, source, buffer );_gcvt( source, 7, buffer );printf( source: %e buffer: %sn, source, buffer );Outputsource: -314150.000000 buffer: -314150.source: -3.141500e+005 buffer: -314150.回复人:Gu_c_h(Gu)(2001-10-17 14:49:56) 得6分 int a = -3.1415e5;CString str;str.Format(%f,a); 回复人:ruixp(锐剑)(2001-10-17 15:06:48) 得6分 CString 的成员函数Format()int a = 2131;CString str;str.Format(%d,a);2。基类对象怎么能转换成派生类对象?int CDaoListView:OnCreate(LPCREATESTRUCT lpCreateStruct) lpCreateStruct-style |= LVS_REPORT |LVS_EDITLABELS;if (CListView:OnCreate(lpCreateStruct) = -1)return -1;/ 创建ImageList;CDaoViewApp * pApp = (CDaoViewApp *) AfxGetApp();m_pImageList = new CImageList();ASSERT(m_pImageList !=NULL);m_pImageList-Create(16,16,TRUE,4,4);m_pImageList-Add(pApp-LoadIcon(IDI_KEY);m_pImageList-Add(pApp-LoadIcon(IDI_ICON4);m_pImageList-Add(pApp-LoadIcon(IDI_ICON5);CListCtrlEx& ctlList = (CListCtrlEx&) GetListCtrl();/我不懂的就这句,cListCtrlEx看下面的声明。ctlList.SetImageList (m_pImageList, LVSIL_SMALL) ;/return 0;class CListCtrlEx : public CListCtrl/类cListCtrlEx定义。.class CDaoListView : public CListView/cDaoListView定义!.注:我的问题是GetListCtrl()返回的是一个cListCtrl对象的引用,怎么能把它转换成一个它的派生类对象的引用?c+的类型转换怎么支持? 回复贴子: 回复人:lhj(努力加油)(2002-1-29 18:56:06) 得0分 CListCtrlEx& ctlList = (CListCtrlEx&) GetListCtrl();这是强制类型转换,&表示是一个引用,lctList的值在这次赋值后不能被修改。回复人:wwwsq(wwwsq)(2002-1-29 19:09:22) 得0分 建议你找本C+方面的书看看,VC虽然号称可视,实际上C+基础还是很重要的。回复人:xcopy(xcopy)(2002-1-29 19:26:16) 得0分 用dynamic_cast()可以安全的转换。 3。如何在CString和double之间转换?要求转换之后能保留小数点,保留正负号?cstring:format(%.xe) x为精度位 回复人:pchaos(杂讲)(2002-1-28 11:21:46) 得0分 CString str;double db;str = 123.456;db = atof(LPCTSTR)str); 回复人:hgw111(hg)(2002-1-28 11:52:57) 得0分 CString - double : atofdouble -CString :Format 回复人:pchaos(杂讲)(2002-1-28 13:46:04) 得0分 CString str;double db;str = 123.456;db = atof(LPCTSTR)str); db = 777.999;str.format(%e, db); 4。字符型要转换成int?atoi(str) 5。_bstr_t 到 unsigned int?_bstr_t str;unsigned int Length=6;Length=Length-str.length(); 6。VARIANT类型转换问题?我在使用MSCOMM中SetOutput()函数时形参必须为VARIANT变量如何将其它的数据类型转换为VARIANT类型?如:Cstring-VARIANT、 *char-VARIANT我对VARIANT的类型结构体不太熟,请讲详细些(最好有范例),谢谢!回复贴子: 回复人:vc_xiaoxin(小新)(2001-12-26 15:43:57) 得0分 VARIANT本身是一个复杂的结构,别的数据怎么转呀?关注 回复人:mpg_liu(星仁)(2001-12-27 18:33:50) 得10分 定义一个VARIANT变量后,他应该是一个结构体变量,其中有一个成员是字符型的,给这个成员赋值 回复人:LLnju(LLnju)(2001-12-27 18:36:10) 得0分 实在不清楚嘛就用 _variant_t , COleVariant 这些东东嘛,很好用的啊 回复人:softarts(CDMA2000)(2001-12-27 18:41:32) 得10分 构造一个就行了。VARIANT varXX;CString strYY;varXX.vt=VT_BSTR;varXX.bstrVal = strYY.allocsysstring();应该可以了。回复人:softarts(CDMA2000)(2001-12-27 18:42:11) 得0分 我也觉得COleVariant要好用一些,呵呵,我都用它。 回复人:bobofu(有问题要问)(2001-12-27 19:32:18) 得10分 CString str;_variant_t var;var = _variant_t(str); 7。COleVarant 如何转换为 CString?CString 如何转换为 char *CString 如何转换为 charxx ?CString 如何转换为 char * wsprintf或者CString 如何转换为 charxx strcpy() 回复人:SecretGarden(天堂鸟)(2002-1-14 11:55:23) 得0分 COleVarant封装了VAREANT类型。VAREANT类型其实是个巨大地Union,里面自然有你想要地unsigned char *类型。CString地GetBuffer和Format可以实现你的后两个问题8。v_variant_t类型转换成cstring总提示我cstring未定义程序如下_variant_t vfirstname;/存储的是数据库中的数据CString str;/提示出错vfirstname=pRs-GetCollect (_variant_t(Phone_Num);vfirstname.ChangeType (VT_BSTR);str=vfirstname.bstrVal;/提示出错 回复贴子: 回复人:hydnoahark(诺亚方舟)(2001-11-12 11:56:51) 得10分 CString str;/提示出错要求include 并且设置Use run-time Library为Multithreaded 回复人:zhengyun_ustc(-)(2001-11-12 12:04:39) 得15分 CString未定义,说明你的工程没有引用MFC!要想使你的工程支持MFC,请按照以下步骤作:1:在你的stdafx.h的头文件中加入:#include afxtempl.h这是一个囊括了MFC的集合定义的头文件,有了它,你的工程就识别Cstring类了。2:在你的工程设置中,在General页中,选择“MFC”为“Using MFC in a shared DLL”OK,现在再编译你的工程即可。 回复人:zhengyun_ustc(-)(2001-11-12 12:06:56) 得5分 _variant_t的bstrVal成员是BSTR类型。它是一个指向一个OLECHART*的指针。 回复人:vickowang(小苍)(2001-11-12 12:48:21) 得5分 (char *)_bstr_t(vfirstname) 回复人:smallfool(smallfool)(2001-11-12 13:52:54) 得4分 或许你还需要一个从UNICODE字符到ANSI字符的转变函数 回复人:sun_1112(萧)(2001-11-12 17:34:44) 得0分 谢谢大家给我这么大的支持!:) 回复人:zhengyun_ustc(-)(2001-11-14 13:24:07) 得0分 用vickowang(小苍)的意见可能会有问题,转换出的字符串应该是乱码。因为(char *)转换需要一个const的字符串资源,才能强制转换。所以应该:_bstr_t bstrTemp = _bstr_t(vfirstname.bstrVal);TCHAR szTempMAX_PATH;szTemp = (char*)bstrTemp;9。char * 转换为TCHAR类型?直接转换,TCHAR相当于char了char * s;TCHAR * s1=(TCHAR *)s; 回复人:dysxq()(2001-12-21 21:26:25) 得0分 要看你的程序设置是ANSI还是UNICODE, 如果是ANSI,直接转,如果是UNICODE,TCHAR相当于WCHAR, 要用mbstowcsz转一下 回复人:xiaoxiaohan(萧晓寒)(2001-12-21 23:52:17) 得0分 Unicode :宽字节字符集1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数?可以调用Microsoft Visual C+的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。2. 如何对DBCS(双字节字符集)字符串进行操作?函数 描述PTSTR CharNext ( LPCTSTR ); 返回字符串中下一个字符的地址PTSTR CharPrev ( LPCTSTR, LPCTSTR ); 返回字符串中上一个字符的地址BOOL IsDBCSLeadByte( BYTE ); 如果该字节是DBCS字符的第一个字节,则返回非0值3. 为什么要使用Unicode?(1) 可以很容易地在不同语言之间进行数据交换。(2) 使你能够分配支持所有语言的单个二进制.exe文件或DLL文件。(3) 提高应用程序的运行效率。Windows 2000是使用Unicode从头进行开发的,如果调用任何一个Windows函数并给它传递一个ANSI字符串,那么系统首先要将字符串转换成Unicode,然后将Unicode字符串传递给操作系统。如果希望函数返回ANSI字符串,系统就会首先将Unicode字符串转换成ANSI字符串,然后将结果返回给你的应用程序。进行这些字符串的转换需要占用系统的时间和内存。通过从头开始用Unicode来开发应用程序,就能够使你的应用程序更加有效地运行。Windows CE 本身就是使用Unicode的一种操作系统,完全不支持ANSI Windows函数Windows 98 只支持ANSI,只能为ANSI开发应用程序。Microsoft公司将COM从16位Windows转换成Win32时,公司决定需要字符串的所有COM接口方法都只能接受Unicode字符串。4. 如何编写Unicode源代码?Microsoft公司为Unicode设计了WindowsAPI,这样,可以尽量减少代码的影响。实际上,可以编写单个源代码文件,以便使用或者不使用Unicode来对它进行编译。只需要定义两个宏(UNICODE和_UNICODE),就可以修改然后重新编译该源文件。_UNICODE宏用于C运行期头文件,而UNICODE宏则用于Windows头文件。当编译源代码模块时,通常必须同时定义这两个宏。5. Windows定义的Unicode数据类型有哪些?数据类型 说明WCHAR Unicode字符PWSTR 指向Unicode字符串的指针PCWSTR 指向一个恒定的Unicode字符串的指针对应的ANSI数据类型为CHAR,LPSTR和LPCSTR。ANSI/Unicode通用数据类型为TCHAR,PTSTR,LPCTSTR。6. 如何对Unicode进行操作?字符集 特性 实例ANSI 操作函数以str开头 strcpyUnicode 操作函数以wcs开头 wcscpyMBCS 操作函数以_mbs开头 _mbscpyANSI/Unicode 操作函数以_tcs开头 _tcscpy(C运行期库)ANSI/Unicode 操作函数以lstr开头 lstrcpy(Windows函数)所有新的和未过时的函数在Windows2000中都同时拥有ANSI和Unicode两个版本。ANSI版本函数结尾以A表示;Unicode版本函数结尾以W表示。Windows会如下定义:#ifdef UNICODE#define CreateWindowEx CreateWindowExW#else#define CreateWindowEx CreateWindowExA#endif / !UNICODE7. 如何表示Unicode字符串常量?字符集 实例ANSI “string”Unicode L“string”ANSI/Unicode T(“string”)或_TEXT(“string”)if( szError0 = _TEXT(J) ) 8. 为什么应当尽量使用操作系统函数?这将有助于稍稍提高应用程序的运行性能,因为操作系统字符串函数常常被大型应用程序比如操作系统的外壳进程Explorer.exe所使用。由于这些函数使用得很多,因此,在应用程序运行时,它们可能已经被装入RAM。如:StrCat,StrChr,StrCmp和StrCpy等。9. 如何编写符合ANSI和Unicode的应用程序?(1) 将文本串视为字符数组,而不是chars数组或字节数组。(2) 将通用数据类型(如TCHAR和PTSTR)用于文本字符和字符串。(3) 将显式数据类型(如BYTE和PBYTE)用于字节、字节指针和数据缓存。(4) 将TEXT宏用于原义字符和字符串。(5) 执行全局性替换(例如用PTSTR替换PSTR)。(6) 修改字符串运算问题。例如函数通常希望在字符中传递一个缓存的大小,而不是字节。这意味着不应该传递sizeof(szBuffer),而应该传递(sizeof(szBuffer)/sizeof(TCHAR)。另外,如果需要为字符串分配一个内存块,并且拥有该字符串中的字符数目,那么请记住要按字节来分配内存。这就是说,应该调用malloc(nCharacters *sizeof(TCHAR),而不是调用malloc(nCharacters)。10. 如何对字符串进行有选择的比较?通过调用CompareString来实现。标志 含义NORM_IGNORECASE 忽略字母的大小写NORM_IGNOREKANATYPE 不区分平假名与片假名字符NORM_IGNORENONSPACE 忽略无间隔字符NORM_IGNORESYMBOLS 忽略符号NORM_IGNOREWIDTH 不区分单字节字符与作为双字节字符的同一个字符SORT_STRINGSORT 将标点符号作为普通符号来处理11. 如何判断一个文本文件是ANSI还是Unicode?判断如果文本文件的开头两个字节是0xFF和0xFE,那么就是Unicode,否则是ANSI。12. 如何判断一段字符串是ANSI还是Unicode?用IsTextUnicode进行判断。IsTextUnicode使用一系列统计方法和定性方法,以便猜测缓存的内容。由于这不是一种确切的科学方法,因此 IsTextUnicode有可能返回不正确的结果。13. 如何在Unicode与ANSI之间转换字符串?Windows函数MultiByteToWideChar用于将多字节字符串转换成宽字符串;函数WideCharToMultiByte将宽字符串转换成等价的多字节字符串。回复人:xtky_limi(痛在心中笑在脸上)(2001-12-22 0:35:58) 得0分 上面说的已经比较全了。 回复人:xtky_limi(痛在心中笑在脸上)(2001-12-22 0:38:13) 得0分 TEXT是宏相当于L#它可以根据编译环境确定为DBMS,还是UNICODE字符集10。int类型转换为CString类型?回复人:tjmxf(天涯)(2001-12-17 19:59:34) 得0分 itoa() 回复人:zf925(天下哪来那么多高手)(2001-12-17 20:00:30) 得22分 char m20;str=str + itoa(i,m,10); 回复人:yuezifeng(wybzd)(2001-12-17 20:00:50) 得22分 CString str;str.Format(%d,i);回复人:kingfish(今飞)(2001-12-17 20:06:27) 得0分 str.Format(%s%d,str,i); 回复人:tanyajun(谈子)(2001-12-17 20:09:25) 得0分 CString str=test;int i=11;CString str1;str1.Format(%d,i);str = str+str1;回复人:guanjinke(纶巾客)(2001-12-17 20:10:42) 得0分 int i=11;CString str=test;CString addition;addition.Format(%d,i);str+=addition;就可以了。 11。关于sprintf类型转换的问题sprintf(buf,select price from ls01 where p_date=%,t_date)其中t_date是CTime类型,%后面应该是什么呢?%s是String类型,%c是char,那么CTime型对应的是什么呢? 回复人:yakai(日落长河)(2001-12-17 17:45:47) 得0分 sprintf(buf,select price from ls01 where p_date=%S,(LPCSTR)t_date.Format( %A, %B %d, %Y );如果不行,就char temp50;CString str=t_date.Format( %A, %B %d, %Y );strcpy(temp,(LPCSTR)str);sprintf(buf,select price from ls01 where p_date=%S,temp);CTime:Format返回CString 回复人:loh(乐啸天涯)(2001-12-17 17:52:57) 得0分 waitdont know 回复人:masterz()(2001-12-17 20:21:05) 得0分 SQL语句中日期要写成字符串yyyymmdd 12。类型转换 unsigned int CString?回复次数:8发表时间:2001-12-17 10:25:23unsigned int f;/unsigned int 04294967295CString g;f=2300000000;g.Format(%d,f);AfxMessageBox(g);出错。回复人:ydogg(灰毛兔频频)(2001-12-17 10:31:29) 得0分 unsigned int f;/unsigned int 04294967295CString g;f=2300000000;g.Format(%d,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学生文员实习总结
- 大学生在中国平安保险公司实习报告范文 -管理资料
- 大学班委辞职申请书怎么写
- 大学校园文化活动策划书
- 外墙保温劳务分包合同简单版
- 建设工程epc总包合同范本
- 供应钢管架出租合同范本
- 分期公司合同转让协议书
- 公司收回股份协议书范本
- 进口贸易融资业务合同范本
- 2025-2030人造板市场发展分析及行业投资战略研究报告
- 返还工伤款项协议书
- 2020-2025年中国智慧仓储行业市场调查研究及投资战略咨询报告
- 什么是个好医护人员的职业素养
- 教育行业服务意识培训
- T-CRHA 085-2024 成人膀胱冲洗并发症护理规范
- Module9 Unit2 Wishing You Happiness Every Day(说课稿)-2023-2024学年外研版(三起)英语六年级下册
- 月嫂资格证考试单选题100道及答案
- 粤沪版物理九年级上册第十二章第1节《认识内能》同步练习
- 水土保持方案投标文件技术部分
- GB/T 3324-2024木家具通用技术条件
评论
0/150
提交评论