QTestLib结果与程序输出不同

时间:2013-03-02 16:59:46

标签: qt unicode qstring qtestlib

我有一些简单的代码可以反转QString。

const QString reverse_qstring(const QString& str_in)
{
    QString out;
    Q_FOREACH(const QChar c, str_in) {
        out.push_front(c);
    }
    return out;
}

当我从命令行输入带有非ASCII字符的文本时,事情按预期进行:

"¿como estás?" :  "?sátse omoc¿"

但是,当我进行以下单元测试时(使用QTestLib):

QCOMPARE(reverse_qstring(QString("¿como estás?")), QString("?sátse omoc¿"));

我明白了:

FAIL!  : program::test_qstring() Compared values are not the same
   Actual (reverse_qstring(QString("??como est??s?"))): ?s??tse omoc??
   Expected (QString("?s??tse omoc??")): ?s??tse omoc??

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我认为您可以为Utf8设置编解码器:http://doc.qt.io/qt-4.8/qtextcodec.html#setCodecForCStrings

或者您可以使用此代替:QString::fromUtf8("?sátse omoc¿")