好吧,我正在用C ++写一个用于linux终端的Chat。即使我正在打字,我也希望收到消息。基本上,非阻塞cin
。我设法通过创建一个线程来完成这项工作。但问题是传入的消息和我的打字正在合并在一起。
有没有办法将cin
行与来自cout
的其他行分开?
抱歉我的英文。
答案 0 :(得分:6)
有没有办法将
cin
行与来自cout
的其他行分开?
是的,但这有点棘手:你需要为控制台禁用echo,并在他输入时打印最终用户输入的字符。
当您检测到传入的消息时,您需要执行以下三项操作:
最终结果如下:
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
答案 1 :(得分:3)
我的想法是将不完整的客户端消息(尚未发送)存储在变量中,当程序收到传入消息时,它应该删除带有退格的客户端消息,将传入消息写入cout然后重写客户的不完整信息。
我没有检查过它。