0

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??

何か案は?

4

1 に答える 1

1

Utf8 のコーデックを設定できると思います: http://doc.qt.io/qt-4.8/qtextcodec.html#setCodecForCStrings

または、代わりにこれを使用できます。QString::fromUtf8("?sátse omoc¿")

于 2013-03-03T01:36:18.147 に答える