I recently wrote a QT program. Convert qstring to char * pointer. As a result, a serious program crash error occurs. With a lot of help debugging, we found that when converting qstring to char *, we must define a qbatearray variable.Cannot be connected
.
The following is an official reply:
How can I convert a qstring to char * and vice versa? (Trolltech)
Answer:
In order to convert a qstring to a char *, then you first need to get a Latin1 representation of the string by calling tolatin1 () on it which will return a qbytearray. then call data () on the qbytearray to get a pointer to the data stored in the byte array. see the documentation:
See the following example for a demonstration:
Int main (INT argc, char ** argv)
{
Qapplication app (argc, argv );
Qstring str1 = "test ";
Qbytearray BA = str1.tolatin1 ();
Const char * c_str2 = ba. Data ();
Printf ("str2: % s", c_str2 );
Return app.exe C ();
}
Note that it is necessary to store the bytearray before you call data () on it, a call like the following
Const char * c_str2 = str2.tolatin1 (). Data ();
Will make the application crash as the qbytearray has not been stored and hence no longer exists.
To convert a char * To A qstring you can use the qstring constructor that takes a qlatin1string, e. g:
Qstring string = qstring (qlatin1string (c_str2 ));
Almost gave QT a mental breakdown.