LINUX.ORG.RU

Ввод с консоли, который не ждет.

 , ,


0

2

UPD3: Я думал, меня камнями закидают через минут. Ан-нет. Дайте хоть ассемблерную вставку, как считать. Хоть что-нибудь, только чтобы оно не текло.

Я сейчас дико протуплю, так что сразу - терпите. Гуглить пытался, ничего не нашел толком. Чем можно заменить cin >>, чтобы он не ждал ввод, скажем, в конструкции вида:

char c;
while (с != 'q'){
  cin >> c; // чем заменить?
}

Т.е. чтобы цикл выполнялся настолько быстро, насколько может процессор, по минимуму задумываясь о вводе. А-ля как в играх, где ввод происходит «мимо» рендеринга сцены.

Сразу скажу, что могу прибегнуть ко всяким SDL, но не хочу. Сишки только учу, вопросы тупые, да, я и так чувствую себя идиотом, не нужно кидаться камнями.

UPD1: До кучи - хочу узнать, есть ли какие-то либы, чтобы выводить ASCII графику, по шаблонам. Например, таблицы.

UPD2: getch() не предлагать, не линукс.



Последнее исправление: coderage (всего исправлений: 5)
Ответ на: комментарий от nickionn

Да если бы. Я про него знаю. Вот: http://msdn.microsoft.com/ru-ru/library/ms235446.aspx

Уже после http://MSDN можно многое понять. :)

Если он есть не только в виндовых либах - колись. Там какая-то каша, в духе «_getch is posix», но нет, нужна <conio.h>, которая виндовая.

coderage
() автор топика
Последнее исправление: coderage (всего исправлений: 1)
Ответ на: комментарий от nickionn

~/../cpp/../main.cpp:2: error: curses.h: No such file or directory

Ошибка, при попытке что-то скомпилить с этим хидером, взято из книги: https://www.google.ru/url?sa=t&rct=j&q=&esrc=s&source=web&amp...

Я к тому, что, вероятно, это не родная либа. А хочется родную. В целом, я еще не знаю куда лезу, поэтому если поясните (а-ля «без курсес нельзя!»), то буду рад.

coderage
() автор топика
Последнее исправление: coderage (всего исправлений: 1)
Ответ на: комментарий от beastie

beastie, спасибо, пойду читать маны. Выглядит неплохо при беглом взгляде.

kike, уже нагуглил, решение красивым не показалось, но спасибо.

coderage
() автор топика
Ответ на: комментарий от beastie

Просто до кучи: а почему развитие осталось в 2005ом? Никому нафиг не нужна с приходом всяких Qt/GTK/SDL и иже с ними?

coderage
() автор топика
Ответ на: комментарий от coderage

Так то только туториал. На самом деле оно ну очень древнее (начало где-то anno 1980) и стабильное. Но всё ещё разрабатывается и активно поддерживается. (Последний релиз где-то в 2011-ом.) Правда там в основном баги фиксят, т.к. добавить уже тольком нечего. ;) Ну и да, центер тяжести сместился в сторону GUI и Web.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 2)
Ответ на: комментарий от beastie

Слабо представляю, как консольная утилита может сместиться в GUI (если только не имеются ввиду библиотеки контролов а-ля MFC/Qt). В веб еще туда-сюда (а-ля webkit для аналогов lynx?).

coderage
() автор топика
Последнее исправление: coderage (всего исправлений: 1)

Ввод _всегда_ тормозит и ждет. Используй асинхронное IO

lovesan ★★★
()

топик прочитал по-диагонали, но по-моему ТС хочет «setbuf(STDIN, NULL)», man 3 setbuf
есть и плюсовый вариант, но я его не помню

metawishmaster ★★★★★
()
Ответ на: комментарий от coderage

пойду читать маны. Выглядит неплохо при беглом взгляде

Т.е. SDL тебе не подходит, а ncurses, внезапно, подходит? Лучше бы тебе ознакомиться с boost asio или libevent. И да, man select и man epoll.

no-such-file ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Ты правнук Сталина?

Да. От Гитлера. Ещё вопросы?

harm
()
Ответ на: комментарий от RevenantX

Это такой троллинг?)

Это намёк, что ТС копает не в ту сторону. Надо же додуматься, опрашивать клавиатуру в цикле!? Сейчас поди не бородатые 80-е, и у ТСа, наверное не CP/M на компе.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)

Тебе нужно не getch и не ncurses. Тебе нужно выполнять ввод и графику выполнять в разных потоках.

Aswed ★★★★★
()
Ответ на: комментарий от no-such-file

Не «не подходит», а «не сейчас». Хочу покодить прототип игрушки для фана, но судя по всему будет проще сразу взять SDL, а не пытаться побороть непоборимое.

Хотя поковырял Ncurses, оказалась клевой, остался доволен, плюс чуть-чуть опыта в копилку :)

coderage
() автор топика
Последнее исправление: coderage (всего исправлений: 1)
Ответ на: комментарий от coderage

Привитая нетерпимость на фоне массовой безграмотности.

harm
()
Ответ на: комментарий от no-such-file

Ну не знаю. Иногда такое еще бывает. В томже SDL и SFML опрашивают клваиатуру в цикле.

RevenantX ★★★★
()

не линукс

А что???

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.