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...
转成char * : char* arr = str.toStdString.data(); 然而, 首先不谈toStdString没有加括号,正确的是toStdString()。这个代码本身就存在一些问题: const char* 和 char* 并不直接存储字符串中的字符,它们本身而是指针,指向的是一块内存空间,内存空间内才有字符串中的字符。在QString执行toStdString()函数...
QString转char*通常是用以下的函数 QString str = "加载文件"; const char *pFile = str.toStdString().c_str(); 如果是英文不会出问题,但是如果QString str中含有中文字符,就会出现乱码 解决方法: QByteArray ba=str .toLocal8Bit(); const char *pFile...QT学习——QString转char* ...Q...
一、QString 转 char* 1.1 一般情况 主要是将QString字符转如123456 就可以转为 0x12 0x34 0x56,也就是是啥就转换为啥。 1.2 含有中文时候 上述代码在转换的时候如果是从QString->char->QString则加一层 QByteArray这个作为QString与Char之间的中间桥梁很有用,在读取.bin文件的时候可以通过file-&g...char和...
实际上,你提到的第4和第5种方法是比较常用的转换方式,即使用toUtf8()然后通过data()或constData()获取const char*。通常,这种方法对于UTF-8编码的QString是有效的。但是,如果转换后出现乱码,很可能是在字符串使用过程中出现了问题。 我之前遇到的问题是这样解决的:确保转换后的const char*在使用期间,它的原始QBy...
这里,我们将const char * 类型的字符串" (0000)"转换成为QString类型。 如果需要显式的转换,可以使用QString的强制转换操作,或者是使用函数fromAscii()等。 为了将QString类型转成const char *字符串,需要进行两步操作,一是使用toAscii()获得一个QByteArray类型对象, 然后调用它的data()或者constData()函数, ...