Строковые функции Visual C ++, поддерживающие юникод: http://msdn.microsoft.com/en-us/library/cc194799.aspx
, вероятно, вы ищете _wcsnicmp
$ 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
.
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.
Даже если бы существовала «волшебная последовательность», которая при записи в консоль надежно стирала бы последнюю записанную строку, вы ВСЕ ЕЩЕ ПОЛУЧИЛИ бы строку и последовательность на выходе (хотя и скрытые на приставка). Подумайте, что случилось бы, если бы кто-то записал результат в файл или передал его другим фильтрам? Знают ли они, как обрабатывать такой ввод? И не говорите мне, что вы исключаете возможность записи где-то еще, кроме непосредственно на консоль. Рано или поздно кто-нибудь БУДЕТ перенаправить вывод - может быть, даже вы!
Правильный способ сделать это - буферизовать каждую строку в памяти по мере ее обработки, а затем решить, выводить ее или нет. На самом деле нет никакого способа обойти это.