* 从昨天开始打算做一个学习点云的构件,点云操作平台选择了MFC,但是在往MFC框架中添加功能的时候常常需要进行一些数据类型的转换,网上也有不少资料,但是感觉有些不够全面且不能一目了然地呈现给读者想要寻找的内容,现做一些笔记,方便自己以后查看,也希望可以帮助读者。*
1. CString向char类型转换
//这里使用string时在MFC项目中可能会报错
//需要在目标文件头部添加命名空间(using namespace std;)
//若此时让然报错需要添加引用(#include "string")
CString str = "hello";
string st = (string)(CStringA)str;
int len = st.length();
char* ch = (char*)malloc(len); //动态申请char*大小的空间
for(int i = 0 ; i <len ; i++)
{
ch[i] = st[i];
}
ch[len] = '\0';
2. int向CString类型的转换
/*若转换时Format函数第一个参数报错可能是因为项目字符集有问题,可以修改为“使用多字节字符集”;或者将参数"%d"改为_T("%d")*/
int myInt;//目标int类型
CString myCString;//目标CString类型
myCString.Format("%d",myInt);
/*幻换函数,有俩个参数(前一个%d表示十进制正数,不加则不能将myInt格式为CString;第二个参数即为需要转换的int类型变量)*/
Formt简单介绍:
有俩种形式,分别是俩个参数和三个参数,三个参数的线程安全但是不常用,俩个参数的较为常用,需要着重掌握。
3. CString向int类型转换
int myInt;//目标int类型
CString myCString;//目标CString类型
myInt= _ttoi(myCString);
4. int向string类型转换
使用C++函数std::to_string可以实现转换,std::to_string不但可以将int转换成string,对于常用的基本数据类型都能进行转换,如float、double、long等。
int myInt;//目标int类型
string to_string (myInt);
5. string向int类型转换
std::string str; //目标string类型
int myInt = std::stoi(str);
6. char向CString类型转换
CString str ="hello";
char * mychar =str.GetBuffer(str.GetLength());
str.ReleaseBuffer();