Пример итератора QHash - не подходит для оператора ‹‹?

Изучая QT, я пытаюсь скомпилировать первый пример из http://qt-project.org/doc/qt-4.8/qhash-iterator.html

Мой код

#include <QHash>
#include <iostream>
#include <QString>

int main(int argc, char *argv[])
{
    QHash<QString, int> hash;
    hash.insert("January", 1);
    hash.insert("February", 2);
    hash.insert("December", 12);

    QHash<QString, int>::iterator i;
    for (i = hash.begin(); i != hash.end(); ++i)
        std::cout << i.key() << ": " << i.value() << std::endl;

}

не компилируется. Я получаю эту ошибку:

main.cpp:14: ошибка: нет совпадения для 'operator‹‹' в 'std::cout ‹‹ i.QHash::iterator::key with Key = QString, T = int'

и я понятия не имею, что не так. Код в значительной степени скопирован из документов. Я что-то упустил здесь?


person user2381427    schedule 16.07.2013    source источник


Ответы (1)


Это потому, что std::cout не работает с QString. Попробуйте использовать QString::toStdString(), или вы также можете использовать qDebug() вместо cout

Дополнительные сведения см. в этих вопросах и ответах.

person spiritwolfform    schedule 16.07.2013