Подскажите с редактируемым по умолчанию в с ++? - PullRequest
3 голосов
/ 09 июля 2009

Можно ли (без внешней библиотеки, такой как boost) запрашивать ввод от пользователя, например, используя cin, но с выбором по умолчанию, который редактируется пользователем (без графического интерфейса пользователя)?

Например, программа скажет:

Give your input: default

и пользователь может нажать ввод, чтобы использовать «по умолчанию», или нажать 1, затем ввести, чтобы получить «по умолчанию1» и т. Д.

РЕДАКТИРОВАТЬ для уточнения:

То, что у меня есть в моей программе, - это предоставление по умолчанию в приглашении (как в одном из ответов ниже). Но я пишу для очень особых случаев, когда наличие редактируемого значения по умолчанию чрезвычайно экономит время (и в 90% случаев все, что нужно пользователю, это добавить суффикс к значению по умолчанию). Я могу только запросить суффикс, но тогда я потерял гибкость в редактировании значения по умолчанию в других 10% случаев.

Ответы [ 3 ]

4 голосов
/ 09 июля 2009

Возможно, вы захотите использовать GNU readline .

3 голосов
/ 09 июля 2009

Обычно это делается немного иначе, чем вы описали. Довольно часто (по крайней мере, как я видел) параметр по умолчанию представляется как часть приглашения , а не после него. Например:

Please enter a year (default: 2009):

или

Do you really want to exit (N):

Это имеет дополнительное преимущество, заключающееся в том, что если пользователь действительно хочет ввести свое собственное значение, а не значение по умолчанию, ему / ей не нужно удалять существующее значение, чтобы сделать это, что является плохим юзабилити и довольно неприятно, особенно если речь идет о длинных сериях вопросов / подсказок.

Он также не требует специальных библиотек и значительно меньше дополнительного кода.

0 голосов
/ 09 июля 2009

Не легко без внешней библиотеки. Все терминалы обрабатывают это по-разному - если вы не хотите писать lot кода, вам понадобится библиотека. Я предлагаю вам взглянуть на Ncurses .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...