2013-03-02 3 views
0

У меня есть простой код, который обращает QString.Результаты QTestLib отличаются от выходных программ

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

Я думаю, что вы можете установить кодек для utf8: http://doc.qt.io/qt-4.8/qtextcodec.html#setCodecForCStrings

Или вы можете использовать вместо этого: QString::fromUtf8("?sátse omoc¿")

+0

кусок пирога! Я хочу, чтобы unicode-сопоставления были не так многочисленны/неочевидны. – taynaron

Смежные вопросы