Profi_GMan
@Profi_GMan

Как сделать, чтоб Qt воспринимала escape-последовательности?

Доброго времени суток!
Наткнулся на такую странную вешь: когда я создаю QString("\""); я должен получить в строке ", но получаю \"
И так со всеми esc-последовательностями
Пример:
void foo(QString y) {
    std::cout << y.toStdString(); //cout, потому что у меня переназначен qDebug и там вывод идёт через cout
}

int main() {
    foo(QObject::tr("\"bar\"")); // в консоль выводится \"bar\"
}


Как это исправить? Или, вероятно, я что-то делаю не так?
Спасибо!
upd Методом тестов выяснил, что судя по всему в этом виноват qDebug(причём не функция, которую он вызывает, а сам дебаг, в функцию приходит уже неправильная строка) и что если в него отправить строку, то всё нормально, проблема возникает только, если отправить QString:
qDebug() << "foo\"bar"; //foo"bar
qDebug() << QString("foo\"bar"); //foo\"bar
  • Вопрос задан
  • 281 просмотр
Решения вопроса 2
Profi_GMan
@Profi_GMan Автор вопроса
Исправил таким образом: qDebug() << qPrintable(...)
Ответ написан
Комментировать
IGHOR
@IGHOR Куратор тега Qt
Qt/C++ DEV/CTO
Раньше qDebug() работал как вы ожидаете (в Qt 4), но с выходом Qt5 добавили методы:
qDebug().noquote()<<..
qDebug().nospace()<<..
qDebug().noquote().nospace()<<..
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы