Задать вопрос
Kalombyr
@Kalombyr

Как в qDebug() реализован перевод на новую строку?

Приветствую!
В Qt есть
qDebug()<<a<<b<<c;
с помощью которого поток выводится в консоль/куда укажут.

Так вот, интересует, благодаря чем происходит перевод на следующую строку?
То есть как реализовано определение, что больше добавлять в поток ничего не будут (последний<<) и можно выводить всё содержимое?
Пытался в исходниках понять, но так и не понял, что за фокус был.
  • Вопрос задан
  • 601 просмотр
Подписаться 1 Сложный Комментировать
Решения вопроса 1
xorknown
@xorknown
Будут проблемы - решайте
Думаю большого ответа по данному поводу не надо. Опишу примерно.

Макрос qDebug возвращает временный объект QDebug в который пишутся какие-либо данные. После ";'" он, как временный объект, уничтожается. А в деструкторе он просто вызывает функцию "qt_message_output", которая пишет куда-либо, не суть, и передает в нее все накопленные параметры. И именно эта функция добавляет newline в вывод.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@IRBaboon
Уважаемый Каломбур!
Понимаю, что вопрос задан уже давно, но я подумал - может кому пригодиться.

Переход на новую строку в консоли можно реализовать отправив стандартный сишний символ перехода на новую строку "\n".
Например:
qDebug() << 'Z' << "\n" << 'O' << "\n" << 'V';
На выходе будет:
Z
O
V

Удачи!
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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