当前位置: 代码迷 >> QT开发 >> QString str1("小弟我")-正确;QString str2("小弟我小弟我") - 异常
  详细解决方案

QString str1("小弟我")-正确;QString str2("小弟我小弟我") - 异常

热度:717   发布时间:2016-04-25 03:08:24.0
QString str1("我")--正确;QString str2("我我") -- 错误
使用QString定义一个中文字符串,发现了很无语的问题,能否识别汉字竟然与汉字的个数有关!!!
我使用的是qt-creator,编译器是Microsoft Visual C++ Compiler 10.0 (MSCV)。
查看creator编辑->选择编码,里面默认UTF-8编码。
#include "widget.h"
#include <QApplication>
#include <QTextCodec>

int main(int argc, char *argv[])
{
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));

//    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
//    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
//    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

    //QString str1("我");           // error, C2001:newline in constant
    //QString str2("我我");         // OK
    //QString str3("我我我");        // error
    //QString str4("我我我我");       // OK
    //QString str5("我我我我我");     // error
    //QString str6("我我我我我我");   // OK

    QApplication a(argc, argv);
    Widget w;
    w.show();
    
    return a.exec();
}

QString定义英文肯定是没有问题的,为了定义中文,按照网上的结果,设置编码格式,分别尝试过UTF-8和GBK。当输入的中文个数不同时,结果也不同,详细见代码!奇数个汉字全部报错了,偶数个函数全部通过编译!!!
请问这是怎么回事?!
------解决思路----------------------
你这是Qt 4啊。
看CSDN上dbzhang800的博客吧。
  相关解决方案