MFC中char*,string和CString之間的轉換


一、    將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) 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com