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 好文...
QStringstr(“hello world!”); 转成const char * : constchar*arr=str.toStdString.c_str(); 转成char * : char*arr=str.toStdString.data(); 然而, 首先不谈toStdString没有加括号,正确的是toStdString()。这个代码本身就存在一些问题: const char* 和 char* 并不直接存储字符串中的字符,它们本身...
因为QString::toUtf8()返回的是一个QByteArray对象,如果这个QByteArray对象离开了它的作用域,那么由data()或constData()返回的指针可能就会指向一块无效的内存,从而导致乱码。 举个例子: const char* convertQStringToConstCharPtr(const QString& str) { QByteArray byteArray = str.toUtf8(); return byteArra...
在Qt中,将QString转换为const char*主要有以下几种方法: 使用toStdString().c_str()方法: cpp QString qstr = "这是一个QString"; const char* cstr = qstr.toStdString().c_str(); 这种方法首先将QString转换为std::string,然后通过std::string的c_str()方法获取const char*。需要注意的是,由于...
这里,我们将const char * 类型的字符串" (0000)"转换成为QString类型。 如果需要显式的转换,可以使用QString的强制转换操作,或者是使用函数fromAscii()等。 为了将QString类型转成const char *字符串,需要进行两步操作,一是使用toAscii()获得一个QByteArray类型对象, 然后调用它的data()或者constData()函数, ...
因为QString::toUtf8()返回的是一个QByteArray对象,如果这个QByteArray对象离开了它的作用域,那么由data()或constData()返回的指针可能就会指向一块无效的内存,从而导致乱码。 举个例子: const char* convertQStringToConstCharPtr(const QString& str) { QByteArray byteArray = str.toUtf8(); return byte...