303_C++_QT_使用boost::str(boost::format()); 拼接字符串,QT上打印是乱码的解决方式,记录一下,使用toLocal8Bit()转码一下

参数都是QString类型的
        std::string textStu = boost::str(boost::format("%s %s %s %s %s %s %s %s %s")
                                     % stuLevel.toLocal8Bit().constData()
                                     % id.toLocal8Bit().constData()
                                     % name.toLocal8Bit().constData()
                                     % sex.toLocal8Bit().constData()
                                     % age.toLocal8Bit().constData()
                                     % stuclass.toLocal8Bit().constData()
                                     % m_penglishScore->value().toLocal8Bit().constData()
                                     % m_pmathScore->value().toLocal8Bit().constData()
                                     % m_pchineseScore->value().toLocal8Bit().constData()
                                    );

		std::cout << "textStu :"<< textStu <<std::endl;

	    //这里再次转回QString 测试一下
        QByteArray byteArray = QByteArray::fromRawData(textStu.c_str(), textStu.size());
        QString qtStr = QString::fromLocal8Bit(byteArray);

        qDebug("\033[31m [APP][func:%s] [line:%d] lgq  qtStr = %s\033[0m\n",__func__,__LINE__,qtStr.toUtf8().constData());

你可能感兴趣的:(珠海,C++,QT,c++,qt,开发语言)