C ++ консольный ввод свободного текста (с максимальным размером символов) - PullRequest
0 голосов
/ 19 ноября 2011

У меня есть объект с полем std::string notes, который допускает максимум 100 символов. Мне нужно написать консольный интерфейс C ++ (используя IOStream), чтобы пользователь мог вводить эти заметки. Разрешены все символы, включая пробелы.

Какой лучший способ сделать это?

Есть ли способ сообщить пользователю, сколько осталось символов?

РЕДАКТИРОВАТЬ: допускается также пустая строка

Ответы [ 2 ]

1 голос
/ 19 ноября 2011

Используйте std::string и std::getline.

Вы можете отобразить сто звездочек следующим образом:

cout << "  " << string( 100, '*' ) << endl;
cout << "> ";  getline( cin, line );

затем, с достаточно широким окном консоли, пользователь может видеть, сколько места осталось.

Приветствия & hth.,

0 голосов
/ 19 ноября 2011

Я не уверен, что std::string может быть сильно ограничен в своей емкости (функция-член max_size дает большое число). Если вы действительно хотите ограничить до 100 символов (что не очень хорошо), использование char buf[100]; (или, возможно, std::array) может иметь больше смысла (но не забывайте иметь завершающий нулевой символ) ).

И для ввода этого поля вы можете использовать функцию-член getline вашего входного потока.

Если вы пишете в Linux консольное приложение, библиотека ncurses может быть вам полезна. Или, возможно, readline библиотека

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