在获取用户输入时防止printf向控制台发送垃圾邮件

时间:2014-05-08 06:26:17

标签: c++ c windows console

我在Windows上编写控制台应用程序。 我把它做成多线程的,所以当我从提示符接收输入时它可以将状态打印到控制台。

但是当我在输入命令时调用printf()时,我看到输出与我输入的内容相交。

如何解决这个问题?有没有办法让输入线分开?

我正在使用getline(cin,strcommand);收集输入数据

2 个答案:

答案 0 :(得分:0)

标准输出是互斥资源,因此它不能同时被输入和输出使用。

在您的问题中,输入和输出相互交叉,所以我认为您可以使用缓冲区来存储您在输入时由打印状态线程创建的日志。输入结束后,您可以检查是否还有未打印的日志。

while(cin >> x) {
  //get output buffer mutex
  if(log_exist)
     //print the log
     //clear the flags
  //release output buffer mutex
}

答案 1 :(得分:0)

我认为你只需要用<<结束这一行。 ENDL;在你的cout结束时。然后输入将在输出下。