以下内容主要摘抄以上大神的博客:
一、总结方法:
变成string,直接赋值。
char[]变成别的,直接赋值。
char*变constchar*容易,const char*变char*麻烦。<const_cast><char*>(constchar*);
string变char*要通过const char*中转。
变成char[]。string逐个赋值,char* const char* strncpy_s()。
1、string转为其他类型
①、将string转const char*
#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <iostream>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
std::string str = "Hellohahahhaha!";
const char* constc = nullptr;
constc= str.c_str();
qDebug()<<"constc "<<constc;//Hellohahahhaha!
return 0;
}
②、string转char*
#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <iostream>
int main(int argc, char *argv[])
{
//将string类型转换为char*类型
std::string str = "Hellohahahhaha!";
char* a = nullptr;
const char* constc = nullptr;
constc= str.c_str();//先将string类型转换为const char*
a =const_cast<char*>(constc);//然后将const char*转换为char*
qDebug()<<"a "<<a;//Hellohahahhaha!
return 0;
}
③、string转char[]
#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <iostream>
int main(int argc, char *argv[])
{
//将string类型转换为char[]类型
std::string str = "Hellohahahhaha!";
char arr[20]= {0};//初始化char[]
for(int i = 0; i<str.length();i++)
{
arr[i]=str[i];
}
qDebug()<<"arrc "<<arr;//Hellohahahhaha!
return 0;
}
2、const char*转为其他类型
①const char*转string
#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <iostream>
int main(int argc, char *argv[])
{
//将const char*转string类型
const char* constc = "Hellohahahhaha!";
std::string str;
str = constc;
qDebug()<<"str "<<str.c_str();//Hellohahahhaha!
return 0;
}
②const char*转char*
int main(int argc, char *argv[])
{
//将const char*类型转换为char*类型
const char* constc = "Hellohahahhaha!";
char* c = nullptr;
c = const_cast<char*>(constc);
qDebug()<<"c "<<c;//Hellohahahhaha!
return 0;
}
③const char*转char[]
#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <iostream>
int main(int argc, char *argv[])
{
//将const char*类型转换为char[]类型
const char* constc = "Hellohahahhaha!";
char arrc[20] = { 0 };
strncpy_s(arrc,constc,20);
qDebug()<<"arrc "<<arrc;//Hellohahahhaha!
return 0;
}
3、char*转为其他类型
①char*转string
#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <iostream>
int main(int argc, char *argv[])
{
//将char*转string类型
char* c = "HelloWorld!";
std::string str;
str= c;
qDebug()<<"str "<<str.c_str();//Hellohahahhaha!
return 0;
}
②char*转const char*
#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <iostream>
int main(int argc, char *argv[])
{
//将char*转const char*类型
char* c = "Hellohahahhaha!";
const char* constc = nullptr;
constc= c;
qDebug()<<"str "<<constc;//Hellohahahhaha!
return 0;
}
③char*转char[]
#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <iostream>
int main(int argc, char *argv[])
{
//将char*转char[]类型
char* c = "Hellohahahhaha!";
char arrc[20] = { 0 };
strncpy_s(arrc,c,20);
qDebug()<<"arrc "<<arrc;//Hellohahahhaha!
return 0;
}
4、char[]转为其他类型
#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <iostream>
int main(int argc, char *argv[])
{
char arrc[20] = "Hellohahahhaha!";
std::string str;
const char* constc = nullptr;
char*c = nullptr;
str= arrc; //char[]类型转string类型
constc= arrc; //char[]类型转const char* 类型
c= arrc; //char[]类型转char*类型
qDebug()<<"arrc "<<str.c_str();//打印string类型:Hellohahahhaha!
qDebug()<<"constc "<<constc;//打印 const char*类型
qDebug()<<"c "<<c;//打印char*类型
return 0;
}