QString與string相互轉換可以用如下方法:
QString::toStdString();
QString::fromStdString();
數字和QString互相轉換:
QString::number(); //數字轉QString,括號裏填數字
toInt(); //QString轉數字 qstring.toInt();
然而QString直接與string相互轉換會出現中文亂碼問題,爲此Qt4中提供了三條語句
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
//↑這兩個函數在QT5中已被去掉
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
但是由於很多程序員完全不考慮這三行代碼是否有任何副作用,只要出現亂碼就不分青紅皁白的使用這三行代碼,造成濫用,所以在Qt5中去掉了前兩個函數
那麼應該如何解決中文亂碼的問題呢,答案當然是有的,在程序中定義如下兩個方法即可
QString str2qstr(const string str)
{
return QString::fromLocal8Bit(str.data());
}
string qstr2str(const QString qstr)
{
QByteArray cdata = qstr.toLocal8Bit();
return string(cdata);
}