最近在看QT开发,总结一下关于几种字符串的转换方法。
方法有很多,这里说一种最通用的方法:char* 是最基础的类型,其他几种类型都可以先转换为char*,然后在进行对于类型的转换。
CString - char*
CString cstr
=
"
this is a cstring.
"
;
char * ch = cstr.GetBuffer(cstr.GetLength() + 1 );
cstr.ReleaseBuffer();
char * ch = cstr.GetBuffer(cstr.GetLength() + 1 );
cstr.ReleaseBuffer();
TChar* tstr = _T("this is a TChar* string.");
CString cstr;
// 直接赋值
cstr = tstr;
// 或者使用Format函数
cstr .Format(_T("%s"), tstr );
string - char*
const
char
*
str1
=
"
this is a const char*.
"
;
string str(str1);
string str(str1);
string
str1
=
"
this is a string.
"
;
char * str2 = const_cast < char *> (str1.c_str());
char * str2 = const_cast < char *> (str1.c_str());
QString - char*
const char* str = "this is a c string.";
QString qstr(QString::fromLocal8Bit(str));
const char* str2 = qstr.toLocal8Bit();
QString - string
#include
<
QString
>
#include < vector >
#include < iostream >
#include < string >
using namespace std;
QString s2q( const string & s);
string q2s( const QString & s);
QString s2q( const string & s)
{
return QString(QString::fromLocal8Bit(s.c_str()));
}
string q2s( const QString & s)
{
return string (( const char * )s.toLocal8Bit());
}
#include < vector >
#include < iostream >
#include < string >
using namespace std;
QString s2q( const string & s);
string q2s( const QString & s);
QString s2q( const string & s)
{
return QString(QString::fromLocal8Bit(s.c_str()));
}
string q2s( const QString & s)
{
return string (( const char * )s.toLocal8Bit());
}