简介在C++开发过程中,最常见的就是各种数据类型相互转换。主要有CString与const char*相互转换、CString与int相互转换、CString与std::string相互转换等等。

MFC中字符类型

MFC下各种数据类型的定义:

    typedef char *LPSTR;
    typedef const char *LPCSTR;
    typedef wchar_t *LPWSTR; 
    typedef const wchar_t *LPCWSTR; 
    typedef wchar_t WCHAR;
	
#ifdef  UNICODE 
    typedef LPCWSTR  LPCTSTR;
    typedef WCHAR TCHAR;
#else
    typedef LPCSTR LPCTSTR;
    typedef char TCHAR;

MFC下各种数据类型总结:

TCHAR: 字符设置为ANSI,相当于char;
  		设置为Unicode,相当于wchar_t.
  	
LPSTR、LPCSTR:
    LPCSTR     32-bit   指针,指向一个常量字串  const char*或const wchar_t*
	LPSTR      32-bit   指针,指向一个字串      char*或wchar_t*
	LPCTSTR    32-bit   指针,指向一个常量字串  此字串可移植到Unicode和DBCS   
	LPTSTR     32-bit   指针,指向一个字串      此字串可移植到Unicode和DBCS

CString 与 const char* 相互转换

CString to const char*

CString str = _T("C++实战网(www.cppszw.com)");
USES_CONVERSION;
const char* p = T2A(str);

const char* to CString

char* p = "C++实战网(www.cppszw.com)";
USES_CONVERSION;
CString str = A2T(p);

CString 与 int 相互转换

CString to int

CString str = _T("1688");
int i = _ttoi(str);

int to CString

int i = 1688;
CString str = _T("");
str.Format(_T("%d"),i);
OutputDebugString(str);

CString 与 std::string 相互转换

CString to std::string

CString str = _T("C++实战网(www.cppszw.com)");
std::string s = (LPCSTR)(CStringA)(str);

std::string to CString

std::string s = "C++实战网(www.cppszw.com)";
CString str(s.c_str());

CString 与 std::wstring 相互转换

CString to std::wstring

CString str = _T("C++实战(www.cppszw.com)");
std::wstring s = str.GetString();

std::wstring to CString

std::wstring s = L"C++实战网(www.cppszw.com)";
CString str = s.c_str();

std::string 与 const char* 相互转换

std::string to const char*

std::string str = "C++实战网(www.cppszw.com)";
const char* p = str.c_str();

注意:这里转化的是const char* 。对于char* ,需要使用strcpy函数将其复制到另一个char数组中:

std::string str = "C++实战网(www.cppszw.com)";
char* p = strcpy((char*)malloc(str.length() + 1), str.c_str());

const char* to std::string

const char* p = "C++实战网(www.cppszw.com)";
std::string str = p;


更多为你推荐