最近在看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());
}