Qt-char*与QString互转

相关资源:https://blog.csdn.net/qq_20553613/article/details/78774476

1.char* 转QString

方法一:直接用QString的构造函数转换,如下:

char* ch = "acuity";//这种写法在我的QT中报  error: C2440: “初始化”: 无法从“const char [7]”转换为“char *”
QString str(ch);//error: C2040: “str”:“QString”与“char *”的间接寻址级别不同
方法二:用QString的静态转换函数获取,如fromUtf8()、fromLocal8bit()、fromUtf16(),如下:

char sTest[] = "abc";
char *pTest = sTest;
QString qTest = QString::fromUtf8(pTest);


2.QString 转char*

方法一:借助QByteArray类,也是本人用得最多的方法,如下:

QString qTest("abc");
char* pTest;
QByteArray baTest = qTest.toLatin1();
pTest = baTest.data();

第三行一般加上,整合一条语句(pTest=qTest.toLatin1().data())有时会出问题。以上对应英文/ASII码来说,如果涉及中文,建议通用用utf-8格式,可以避免莫名其妙的乱码现。这一点在代码编辑上建议也是使用utf-8格式。如下:

QString qTest("abc中文");
char* pTest;
QByteArray baTest = qTest.toUtf8();
pTest = baTest.data();

方法二:

对于涉及中文情况,也可以先将QString转换为标准库string类型,然后再将string转换为char*。如下:

QString sTest("abc中文");
std::string ssTest = sTest.toStdString();
const char* ch = ssTest.c_str();


原文地址:https://www.cnblogs.com/FKdelphi/p/12889629.html