vc char转string,

  vc char转string,

  字符*转换成CString

  若将字符*转换成CString,除了直接赋值外,还可使用CString:格式进行。例如:

  char chArray[]=这是一个测试;

  char * p=这是一个测试;

  或

  LPSTR p=这是一个测试;

  或在已定义统一码应的用程序中

  TCHAR * p=_T(这是一个测试);

  或

  LPTSTR p=_T(这是一个测试);

  CString theString=chArray

  绳子. Format(_T(%s ),char ray);

  string=p;

  CString转换成字符*

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

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

  CString字符串(这是测试);

  LPTSTR lpsz=(LPTSTR)(LPCTSTR)字符串;

  方法二,使用strcpy。例如:

  CString字符串(这是测试);

  新TCHAR[theString .GetLength()1];

  _tcscpy(lpsz,字符串);

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

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

  CString s(_T(这是测试));

  LPTSTR p=s . get buffer();

  //在这里添加使用p的代码

  如果(p!=NULL)* p=_ T( \ 0 );

  南ReleaseBuffer()。

  //使用完后及时释放,以便能使用其它的CString成员函数

  字符串转换成字符*

  方法一,使用ConvertBSTRToString。例如:

  #包含" comutil.h "

  #杂注注释(lib, comsupp.lib )

  int _tmain(int argc,_TCHAR* argv[]){

  BSTR bstr text=:SysAllocString(L test );

  char * lpsztext 2=_ com _ util:ConvertBSTRToString(bstr text);

  SysFreeString(bstr文本);//用完释放

  删除[]lpsztext 2;

  返回0;

  }

  ** 此方法不好,会造成内存泄露,SysFreeString也没有效果。

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

  _ bstr _ t b=bstrText

  char * lpsztext 2=b;

  * 不会有内存泄露,推荐方法

  字符*转换成字符串

  方法一,使用SysAllocString等应用程序接口函数。例如:

  BSTR bstr text=:SysAllocString(L test );

  BSTR bstr text=:SysAllocStringLen(L test ,4);

  BSTR bstr text=:sysallocstring bytelen( Test ,4);

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

  //COleVariant strVar(这是测试);

  _variant_t strVar(这是一个测试);

  BSTR bstr text=strvar。bstr val

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

  BSTR bstrText=_bstr_t(这是一个测试);

  方法四,使用CComBSTR。例如:

  BSTR bstrText=CComBSTR(这是一个测试);

  或

  CComBSTR bstr(这是一个测试);

  BSTR bstr文本=bstr。m _ str

  方法五,使用ConvertStringToBSTR。例如:

  char * lpszText= Test

  BSTR bstr text=_ com _ util:ConvertStringToBSTR(lpszText);

  (5)字符串转换成字符串

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

  CString字符串(这是测试);

  BSTR bstrText=str .AllocSysString();

  …

  SysFreeString(bstr文本);//用完释放

  字符串转换成CString

  一般可按下列方法进行:

  BSTR bstr text=:SysAllocString(L test );

  字符串海峡;

  海峡empty();

  str=bstrText

  或

  CStringA str(bstr文本);

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

  方法一,使用MultiByteToWideChar将美国国家标准学会字符转换成统一码字符,使用WideCharToMultiByte将统一码字符转换成美国国家标准学会字符。

  方法二,使用" _T "将美国国家标准学会转换成"一般"类型字符串,使用" L "将美国国家标准学会转换成Unicode,而在托管C环境中还可使用S将美国国家标准学会字符串转换成字符串*对象。例如:

  TCHAR tstr[]=_T(这是一个测试);

  wchar_t wszStr[]=L 这是一个测试;

  字符串* str=S "这是一个测试";

  方法三,使用ATL 7.0的转换宏和类8.5升至7.0升.在原有3.0基础上完善和增加了许多字符串转换宏以及提供相应的类。

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

  LPTSTR tstr=CA2TEX 16(这是一个测试);

  LPCTSTR tcstr=CA2CT(这是一个测试);

  wchar_t wszStr[]=L 这是一个测试;

  char * chstr=CW2A(wszStr);

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: