Convert qstring to char * In QT or vice versa
1. Convert qstring to STD: String. You can use the member function tostdstring () of qstring ()
Qstring qstr = "123"; STD: String STR = qstr. tostdstring ();
2. Convert qstring to char * or vice versa
Direct conversion is not acceptable because qstring does not provide direct member functions, but you can use qbytearray to transfer it. For example:
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 ();
}
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. local8bit ()
For example
Printf ("% s", (const char *) Str. local8bit ());
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, you can convert STD: string from fromlocal8bit () to a function with c_str (), and convert it to char * qstring. toascii () is hard to remember.
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 :: for the qstring constructed by wstring, you can use qdebug () to output the original Chinese information. The conversion between GB encoding and utf8 encoding is added 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 );
}