一、 將CString類轉換成char*(LPSTR)類型
方法一,使用強制轉換。例如:
CString theString( "This is a test" );
LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString;
方法二,使用strcpy。例如:
CString theString( "This is a test" );
LPTSTR lpsz = new TCHAR[theString.GetLength()+1];
_tcscpy(lpsz, theString);
方法三,使用CString::GetBuffer。例如:
CString s(_T("This is a test "));
LPTSTR p = s.GetBuffer();
// 在這里添加使用p的代碼
if(p != NULL) *p = _T('\0');
s.ReleaseBuffer();
// 使用完后及時釋放,以便能使用其它的CString成員函數
CString str = "ABCDEF";
char *pBuf = str,GetBuffer( 0 );
str.ReleaseBuffer();
二、 string轉char*
string 是c++標准庫里面其中一個,封裝了對字符串的操作
把string轉換為char* 有3種方法:
1。data(),返回沒有”\0“的字符串數組
如:
string str="abc";
char *p=str.data();
2.c_str 返回有”\0“的字符串數組
如:string str="gdfd";
char *p=str.c_str();
3 copy
比如
string str="hello";
char p[40];
str.copy(p,5,0); //這里5,代表復制幾個字符,0代表復制的位置
*(p+5)='\0'; //要手動加上結束符
cout < < p;
三、 字符串string轉換為其它數據類型
temp="123456";
1)短整型(int)
i = atoi(temp);
2)長整型(long)
l = atol(temp);
3)浮點(double)
d = atof(temp);
string s; d= atof(s.c_str());
4)BSTR變量
BSTR bstrValue = ::SysAllocString(L"程序員");
...///完成對bstrValue的使用
SysFreeString(bstrValue);
5)CComBSTR變量
CComBSTR類型變量可以直接賦值
CComBSTR bstrVar1("test");
CComBSTR bstrVar2(temp);
6)_bstr_t變量
_bstr_t類型的變量可以直接賦值
_bstr_t bstrVar1("test");
_bstr_t bstrVar2(temp);
四、 Char*轉換為string
如果要把一個char 轉換成string, 可以使用 string s(char *);
五、string 轉CString
CString.format("%s", string.c_str());
六、char 轉CString
CString.format("%s", char*);
七、 CString -> string
string s(CString.GetBuffer());
GetBuffer()后一定要ReleaseBuffer(),否則就沒有釋放緩沖區所占的空間.
八、CString互轉int
將字符轉換為整數,可以使用atoi、_atoi64或atol。
而將數字轉換為CString變量,可以使用CString的Format函數。如
CString s;
int i = 64;
s.Format("%d", i)
