最近在看QT開發,總結一下關於幾種字串的轉換方法。
方法有很多,這裡說一種最通用的方法:char* 是最基礎的類型,其他幾種類型都可以先轉換為char*,然後在進行對於類型的轉換。
CString - char*
CString cstr = "this is a cstring.";
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 str1 ="this is a string.";
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());
}