Как в qDebug() реализован перевод на новую строку?
Приветствую!
В Qt есть qDebug()<<a<<b<<c;
с помощью которого поток выводится в консоль/куда укажут.
Так вот, интересует, благодаря чем происходит перевод на следующую строку?
То есть как реализовано определение, что больше добавлять в поток ничего не будут (последний<<) и можно выводить всё содержимое?
Пытался в исходниках понять, но так и не понял, что за фокус был.
Думаю большого ответа по данному поводу не надо. Опишу примерно.
Макрос qDebug возвращает временный объект QDebug в который пишутся какие-либо данные. После ";'" он, как временный объект, уничтожается. А в деструкторе он просто вызывает функцию "qt_message_output", которая пишет куда-либо, не суть, и передает в нее все накопленные параметры. И именно эта функция добавляет newline в вывод.
Уважаемый Каломбур!
Понимаю, что вопрос задан уже давно, но я подумал - может кому пригодиться.
Переход на новую строку в консоли можно реализовать отправив стандартный сишний символ перехода на новую строку "\n".
Например: qDebug() << 'Z' << "\n" << 'O' << "\n" << 'V';
На выходе будет:
Z
O
V