C ++:cin而cout

时间:2014-12-25 21:01:07

标签: c++

好吧,我正在用C ++写一个用于linux终端的Chat。即使我正在打字,我也希望收到消息。基本上,非阻塞cin。我设法通过创建一个线程来完成这项工作。但问题是传入的消息和我的打字正在合并在一起。

有没有办法将cin行与来自cout的其他行分开?

抱歉我的英文。

2 个答案:

答案 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然后重写客户的不完整信息。

我没有检查过它。