简介在C++开发过程中,最常见的就是各种数据类型相互转换。主要有CString与const char*相互转换、CString与int相互转换、CString与std::string相互转换等等。
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 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 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 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 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 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;
本文向大家介绍一个C++实战项目:C++实现雪花算法(SnowFlake)产生唯一ID,主要涉及雪花算法、算法知识等,具有一定的C++实战价值,感兴趣的朋友可以参考一下。
本文介绍一个C++代码片段:如何在C++中删除一个文件目录下的所有文件及目录,感兴趣的朋友可以参考一下。
本文介绍C++实现C++实现8种排序算法,主要包括冒泡排序、插入排序、二分插入排序、希尔排序、直接选择排序、堆排序、归并排序、快速排序,直接上代码,感兴趣的朋友可以参考一下。
本文介绍C++实现线程同步的四种方式:事件对象、互斥对象、临界区、信号量,感兴趣的朋友可以参考一下。
本文介绍C++内存泄漏的检测与定位方法,感兴趣的朋友可以参考一下。
本文向大家介绍一个C++实战项目:C++实现一个多线程安全的队列容器模板类,主要涉及C++模板类的使用、互斥体实现多线程安全、队列数据结构等知识,具有一定的C++实战价值,感兴趣的朋友可以参考一下。