std::string s2 = s2.toStdString(); const char* cc = s.c_str(); 上面的代码执行完后,cc打印出来是乱码 1 2 QByteArray ba = s1.toLatin1(); const char* cc = ba.data(); 换成这种方式来转换,cc打出来就正常了 上面就是QString转换为const char*后乱码的解决方案 分类: C++ , QT 好文...
因为QString::toUtf8()返回的是一个QByteArray对象,如果这个QByteArray对象离开了它的作用域,那么由data()或constData()返回的指针可能就会指向一块无效的内存,从而导致乱码。 举个例子: const char* convertQStringToConstCharPtr(const QString& str) { QByteArray byteArray = str.toUtf8(); return byteArra...
简单来说,QString的+=即可完成这个功能: str += " (0000)" 这里,我们将const char * 类型的字符串" (0000)"转换成为QString类型。 如果需要显式的转换,可以使用QString的强制转换操作,或者是使用函数fromAscii()等。 为了将QString类型转成const char *字符串,需要进行两步操作,一是使用toAscii()获得一个...
1.首先记录一下QString,QByteArray,char * 之间的转换 (1)QString->QByteArrayQStringbuf = "123";QByteArraya =...buf.toUtf8(); //中文 a = buf.toLocal8Bit(); //本地编码 (2)QByteArray-> char * char *b = a.data(); (3) char...* ->QString[网络编程常常涉及到] char *p = "...
因为QString::toUtf8()返回的是一个QByteArray对象,如果这个QByteArray对象离开了它的作用域,那么由data()或constData()返回的指针可能就会指向一块无效的内存,从而导致乱码。 举个例子: const char* convertQStringToConstCharPtr(const QString& str) { QByteArray byteArray = str.toUtf8(); return byte...
实际上,你提到的第4和第5种方法是比较常用的转换方式,即使用toUtf8()然后通过data()或constData()获取const char*。通常,这种方法对于UTF-8编码的QString是有效的。但是,如果转换后出现乱码,很可能是在字符串使用过程中出现了问题。 我之前遇到的问题是这样解决的:确保转换后的const char*在使用期间,它的原始QBy...