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::string和QByteArray的相互转换转
常规的用法可以通过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));