Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo QT3 implementa la conversión entre QString y char*

Cómo QT3 implementa la conversión entre QString y char*

En Qt, QString se usa para cadenas, lo que de hecho brinda comodidad a los desarrolladores. Piense en los diversos tipos de variables definidos en VC, así como en los diversos tipos de parámetros de funciones, que a menudo requieren la nueva conversión de tipos de este año. >Cuando Qt usa bibliotecas de código abierto de terceros, dado que los tipos de bibliotecas son básicamente tipos de cadenas estándar, cuando se encuentra el tipo Char*

Cómo convertir QString en Qt Para char*, debe usar la clase QByteArray. p>

Cómo convertir QString a char * en Qt, necesita usar la clase QByteArray. Para obtener instrucciones sobre la clase QByteArray, consulte el archivo de ayuda de Qt.

Porque hay un '/0' al final de char*, y QString::toLatin1() agregará '/0'

El método es el siguiente:

Qstring

str;

char*

ch;

QByteArray

ba

=

str.toLatin1();

ch=ba.data();

Esto completa la conversión de QString a char. . El programa probado se ejecuta sin errores

Tenga en cuenta que se debe agregar la tercera línea en lugar de str.toLatin1().data(), por lo que puede haber errores una vez completado.

Suplemento: no hay problema cuando QString no contiene chino en el método anterior, pero cuando QString contiene chino, la conversión a char * es confusa e799bee5baa6e997aee7ad9431333361313962 Utilice el siguiente método para resolverlo: <. /p>

Método 1:

Agregar soporte de codificación GBK:

#include

lt;QTextCodecgt;

QTextCodec: :setCodecForTr(QTextCodec::codecForName(" GBK"));

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));

Luego cambie el tercer comportamiento anterior : QByteArray

ba

=

str.toLoacl8Bit();

toLoacl8Bit admite chino

Método 2 :

Primero convierta QString al tipo de cadena en la biblioteca estándar y luego convierta la cadena al tipo char* de la siguiente manera:

std::string

str

=

nombre de archivo.toStdString();

const

char*

ch

=

str.c_str();