请不要这样使用:
std::string sourceStr{"testStr"};
QString qStr = QString::fromStdString(sourceStr);
std::string str = qStr::toStdString();
或者间接使用:
QByteArray QString::toUtf8() const
std::string QByteArray::toStdString() const
这样会导致:
str.size()与sourceStr.size()、qStr.size()不一致。
请使用如下方式来避免QString与std::string由于编码不一致导致的转换问题,如下:
先用QByteArray接收std::string再转成QString:
std::string sourceStr{"testStr"};
const auto& qArray = QByteArray::fromRawData(sourceStr.c_str(),sourceStr.size())
QString qStr = QString::fromLocal8Bit(qArray);
将QString转为std::string:
const auto& qArray = qStr.toLocal8Bit();
std::string str = qArray.constData();
这样不会导致上述问题。