This article from: http://blog.csdn.net/lanmanck/archive/2009/07/05/4322656.aspx
How to convert qstring to char * or vice versa
Note: The following method should be qt3.0. Some methods are similar. For more information, see qt4 Class documentation.
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 ));
There are other methods:
Method 1 -----------------------------------------
# Define g2u (s) (qtextcodec: codecforname ("GBK")-> tounicode (s ))
# Define u2g (s) (qtextcodec: codecforname ("GBK")-> fromunicode (s ))
Qstring STR;
Qcstring CSTR;
STR = g2u ("Chinese Input ");
CSTR = u2g (STR );
Qcstring has such an overload Operator
Operator const char * () const
Yes.
Printf ("% s/n", (const char *) CSTR );
Or copy it out.
Char Buf [1024];
Strcpy (BUF, (const char *) CSTR );
Method 2 -----------------------------------------
For a Chinese System
Directly use (const char *) Str. tolocal8bit ()
For example
Printf ("% s", (const char *) Str. tolocal8bit ());
STR is a qstring
Method 3 -----------------------------------------
Char STR [64];
Qtextcodec * textcod = qtextcodec: codecforname ("GBK ");
Qcstring string1 = textcod-> fromunicode (listbox1-> currenttext ());
Strcpy (STR, string1 );
Qstring and STD: String
From char * To qstring, it can be converted from fromlocal8bit ()
STD: string functions with c_str () are converted to char *
Qstring has toascii () and cannot be remembered
You can check it out.
My carelessness caused a big mistake. I checked the QT document again. Originally, QT could generate a qstring directly from STD: wstring and use qstring: fromstdwstring (const STD :: wstring. I tried to use the qstring constructed by char * returned by c_str () of STD: String. instead of saving the original Chinese information, I used STD :: qstring constructed by wstring can use qdebug () to output the original Chinese information.
Conversion between GB encoding and utf8 Encoding
Add this sentence after the main function app:
Quote:
Qtextcodec: setcodecforlocale (qtextcodec: codecforname ("gb18030 "));
The conversion method from utf8 encoding to GB encoding is as follows:
Quote:
Qstring utf8_to_gb (qstring strtext)
{
Return qstring: fromutf8 (strtext. tolocal8bit (). Data ());
}
From GB to utf8, we often use:
Quote:
Qstring gb_to_utf8 (char * strtext)
{
Return qstring: fromlocal8bit (strtext );
}