我的程序中有线程,我想将字符放入流中并在另一个线程中读取它,但是在std :: cin.putback()之后我需要从键盘写一些东西来“唤醒”std :: cin在功能主。我可以自动阅读吗?
答案 0 :(得分:3)
这不是流的工作方式。 std::cin
将来自程序外部的数据读取到标准输入,而putback
只允许将实际上刚读取的字符保留回缓冲区以便下一步重新解析您调用operator>>
(或get
或getline
或其他阅读方法)的时间。
如果要在线程之间进行通信,则应使用某些线程库中的消息队列,例如: Boost提供了一个体面的便携式。
无法使用流,至少是标准库提供的流,因为stringstream
不是线程安全的,并且无法从原始文件创建fistream
/ fostream
handle,因此您无法将它们与POSIX pipe
函数结合使用。可以在流中包装消息队列(并且boost为您提供了足够的工具),但原始消息队列API可能是合适的。