我正在用C++编写一个可以在Linux终端中使用的聊天系统。我希望能够即使在我输入时也能接收到消息。基本上,需要一个非阻塞的cin
。我通过创建线程成功实现了这一点。但是问题在于收到的消息和我正在输入的消息被混合在一起。
有没有办法将来自cout
的其他行与cin
行分开?
对不起我的英语。
我正在用C++编写一个可以在Linux终端中使用的聊天系统。我希望能够即使在我输入时也能接收到消息。基本上,需要一个非阻塞的cin
。我通过创建线程成功实现了这一点。但是问题在于收到的消息和我正在输入的消息被混合在一起。
有没有办法将来自cout
的其他行与cin
行分开?
对不起我的英语。
cout
的其他行与cin
行分开显示?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
cin
和cout
不适用于交互式输入,它们用于从/向流读取/写入数据,而不是从用户处获取数据。因此,建议使用像Ncurses这样的库来进行交互式用户输入。 - Konrad Rudolph