Как я могу использовать cin и cout одновременно без прерывания? - PullRequest
1 голос
/ 02 марта 2012

Я пишу консольное приложение win32, у которого есть два потока, один продолжает использовать cout для записи чего-либо в консоль, а другой продолжает использовать cin, чтобы попытаться получить какой-либо ввод.Оба работают хорошо, у меня нет потери данных, за исключением того, что это не красиво ... Иногда, когда я что-то ввожу, другой поток cout что-то выходит, и эти две вещи держатся вместе. Могу ли я в любом случае раздобыть их отдельно? Если есть возможность сделать это, мне нужно открыть окно и перенаправить поток cout на него, чего я действительно не хочу делать ...

1 Ответ

0 голосов
/ 13 ноября 2013

Убедитесь, что вы получаете вводимый символ за символом. Затем, когда вам нужно что-то вывести, начните с перемещения курсора на начало текущей строки с возвратом каретки '\ r'

Затем убедитесь, что ваш вывод перезаписывает текущий ввод, заполняя его пробелами, если это необходимо.

Наконец, напечатайте перевод строки, чтобы начать новую строку и переписать ваш текущий ввод

std::cout << "\r" << output << padding << "\n" << currentinput;
...