Есть ли способ разделить cin
линии от других линий, следующих от cout
?
Да, но это немного сложно: вам нужно отключить эхо для консоли и напечатать символы, введенные конечным пользователем по мере их ввода.
При обнаружении входящего сообщения, вы должны сделать эти три вещи:
- очистить все символы в строке конечный пользователь вошел до сих пор
- Печать входящего сообщения
- Распечатайте символы, введенные до сих пор на следующей строке.
Конечный результат будет выглядеть следующим образом:
Friend: How are you? <== This is your friend's prior message
You: > I am fi <== This is the text you've entered so far
Когда следующее сообщение приходит, прежде чем вы закончите печатать, вы переставить последние строки следующим образом:
Friend: How are you? <== This is your friend's prior message
Friend: Are you coming to school tomorrow? <== This is the new line that came in as the user was typing
You: > I am fi <== This is the text you've entered so far, re-printed again
a) Не использовать (несинхронизированные) потоки. б) Как насчет ввода «строка», а остальная часть консоли - это выходная часть? Для установки позиций курсора и т. Д. Помогать NCurses. – deviantfan
Возможно, вы захотите взглянуть на что-то вроде этого: https://en.wikipedia.org/wiki/Ncurses – Galik
Короткий ответ: 'cin' и' cout' непригодны для интерактивного ввода, они предназначены для чтения/записи к * потокам *, а не от пользователя. Следовательно, рекомендуется использовать что-то вроде ncurses, которое является библиотекой для интерактивного ввода пользователем. –