您的位置:首页 > 编程语言 > Qt开发

Qt中QString和string互相转换的中文乱码问题

2018-03-14 17:04 531 查看
QString与string相互转换可以用如下方法:
QString::toStdString();
QString::fromStdString();
1
2
数字和QString互相转换:
QString::number(); //数字转QString,括号里填数字
toInt(); //QString转数字 qstring.toInt();
1
2
然而QString直接与string相互转换会出现中文乱码问题,为此Qt4中提供了三条语句
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
//↑这两个函数在QT5中已被去掉
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
1
2
3
4
但是由于很多程序员完全不考虑这三行代码是否有任何副作用,只要出现乱码就不分青红皂白的使用这三行代码,造成滥用,所以在Qt5中去掉了前两个函数那么应该如何解决中文乱码的问题呢,答案当然是有的,在程序中定义如下两个方法即可
QString str2qstr(const string str)
{
return QString::fromLocal8Bit(str.data());
}

string qstr2str(const QString qstr)
{
QByteArray cdata = qstr.toLocal8Bit();
return string(cdata);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Qt