Возврат терминального курсора для запуска с включенного обертывания

Строковые функции Visual C ++, поддерживающие юникод: http://msdn.microsoft.com/en-us/library/cc194799.aspx

, вероятно, вы ищете _wcsnicmp

8
задан Deduplicator 21 February 2015 в 17:36
поделиться

3 ответа

$ cat >test.sh <<'EOF'
> #!/bin/sh
> tput sc
> echo 'Here is a really long multi-line string: .............................................................................................'
> tput rc
> echo 'I went back and overwrote some stuff!!!!'
> echo
> EOF
$ sh test.sh
I went back and overwrote some stuff!!!! .......................................
......................................................

Найдите строковые возможности save_cursor и restore_cursor в базе данных terminfo .

3
ответ дан 5 December 2019 в 21:21
поделиться

You can query terminal dimensions with a simple ioctl:

#include <sys/types.h>
#include <sys/ioctl.h>

// ...

struct winsize ws;
ioctl(1, TIOCGWINSZ, &ws);

// ws.ws_col, ws.ws_row should now contain terminal dimensions

This way you can prevent printing anything beyond the end of line and simply use the \r method.

0
ответ дан 5 December 2019 в 21:21
поделиться

Даже если бы существовала «волшебная последовательность», которая при записи в консоль надежно стирала бы последнюю записанную строку, вы ВСЕ ЕЩЕ ПОЛУЧИЛИ бы строку и последовательность на выходе (хотя и скрытые на приставка). Подумайте, что случилось бы, если бы кто-то записал результат в файл или передал его другим фильтрам? Знают ли они, как обрабатывать такой ввод? И не говорите мне, что вы исключаете возможность записи где-то еще, кроме непосредственно на консоль. Рано или поздно кто-нибудь БУДЕТ перенаправить вывод - может быть, даже вы!

Правильный способ сделать это - буферизовать каждую строку в памяти по мере ее обработки, а затем решить, выводить ее или нет. На самом деле нет никакого способа обойти это.

4
ответ дан 5 December 2019 в 21:21
поделиться
Другие вопросы по тегам:

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