QT环境下的各种类型的字符串转换

1.QString和QByteArray的相互转换

QString to QByteArray:

QByteArray qbaData;

QString str = QString(qbaData);

 QString to QByteArray:

// 不含中文
QByteArray by1 = str.toLatin1();
// 含中文
QByteArray by2  = str.toLocal8Bit();

 

2.std::string和QString的相互转换

QString qstr("");
string s = qstr.toStdString();
QString qstr2 = QString::fromStdString(s);

 

3.std::stringQByteArray的相互转换

常规的用法可以通过QString来实现

std::string stdString("");
QByteArray qba = QString::fromStdString(stdString).toAscii();
std::string stdString2 = QString(qba).toStdString();

从Qt 5.4开始,QByteArray建立了对std::string转换的支持。QByteArray::toStdString()QByteArray::fromStdString()

inline std::string QByteArray::toStdString() const
{ return std::string(constData(), length()); }

inline QByteArray QByteArray::fromStdString(const std::string &s)
{ return QByteArray(s.data(), int(s.size())); }

因此我们可以直接使用以下转换方法:

// std::string => QByteArray
QByteArray byteArray(stdString.c_str(), stdString.length());

// QByteArray => std::string
std::string stdString(byteArray.constData(), byteArray.length());

这种转换是完美的无损转换。

 

4.char*QByteArray之间的转换

QString str = “hello”; //QString转char *  
QByteArray ba = str.toLatin1();  
char *mm = ba.data();

char* 转 QByteArray:
QByteArray ba(chr, sizeof(chr));

 

posted @ 2021-04-29 17:14  指匠  阅读(648)  评论(0)    收藏  举报