Повысьте asio читать со стандартного ввода асинхронно - PullRequest
0 голосов
/ 10 ноября 2019

Я хочу читать из стандартного ввода (в терминах c ++, std :: cin) с помощью функции boost asio async_read (). Следующий код не компилируется и выдает мне очень длинное сообщение об ошибке из-за ошибки при создании экземпляра. Может кто-нибудь ответить, как я могу читать из stdin асинхронно с помощью этой функции?

char buf[64];

boost::asio::async_read(std::cin, boost::asio::buffer(buf),
                          [](const boost::system::error_code &ec, std::size_t size){});

Редактировать: Я знаю, что подобный вопрос уже задавался здесь Использование boost :: asio :: async_read с stdin? , однако мне не ясно, каким образом отмеченный ответ относится к вопросу

1 Ответ

0 голосов
/ 10 ноября 2019

Вы должны использовать posix::stream_descriptor

Например:

using namespace boost::asio;
io_context ioc;        
posix::stream_descriptor input_stream(ioc, STDIN_FILENO);
// assume that you already defined your read_handler ...
async_read(input_stream, buffer(buf), read_handler);
ioc.run();

Обратите внимание, что вы не должны смешивать приведенный выше код с std::cin

. информацию см. здесь .

...