Как перенести на новую строку не возвращая каретку?

223
25 января 2018, 19:33

В c++ перенос строки осуществляется через \n но он так-же переносит каретку в исходное состояние, пример:

Первый текст
Перенесенный текст

А мне требуется что-бы каретка оставалась в исходном состоянии:

Первый текст
            Перенесенный текст

Я знаю что такая система есть в ассемблере, можно ли это сделать без помощи функций?

Answer 1

Если речь идет о выводе на стандартный вывод в Windows, то в рамках стандартного С++ решения нет. Стандартный вывод является текстовым потоком, а он всегда транслирует LF в пару CR-LF (т.е. \n в \r\n). В дополнение к этому сама системная консоль может еще делать свою трансляцию.

Системно-зависимыми средствами в Windows 10 такого эффекта можно достичь, выключив трансляцию на уровне стандартной библиотеки, т.е. переведя стандартный вывод в бинарный режим

#include <fcntl.h>  
#include <io.h>  
_setmode(_fileno(stdout), _O_BINARY);

а также дополнительно на уровне Windows-консоли

#include <windows.h> 
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD mode;
GetConsoleMode(hCon, &mode);
SetConsoleMode(hCon, mode | DISABLE_NEWLINE_AUTO_RETURN);

Последнее требует использования Windows 10 SDK. Возможно это означает, что в более ранних версиях Windows этого делать не нужно, т.е. консоль своей трансляции не делает. (В более ранних SDK не объявлено константы DISABLE_NEWLINE_AUTO_RETURN.)

Эффект влияет как на вывод через стандартную библиотеку С, так и на вывод через стандартную библиотеку С++.

READ ALSO
Uniform initialization

Uniform initialization

В С++11 появился новый синтаксис инициализацииВот что по этому поводу пишет Скотт Майерс в книге Effective Modern C++:

226
NumberLong mongoDb java

NumberLong mongoDb java

Как в записать в mongo строку "1509137313000" что бы в базе она отображалась вот так

269
Java. Создание папок по списку из txt-файла

Java. Создание папок по списку из txt-файла

Я уже всю голову сломалПисал по-разному, но почему то из всего списка создаётся только два (всегда одни и те же StringBufferInputStream и Writer) каталога,...

207
Type-аргументы в lambda-выражении

Type-аргументы в lambda-выражении

Имеем следующий код внутри класса MyClass:

275