gpt4 book ai didi

c++ - std::cin.putback() 和 "wake up"它

转载 作者:搜寻专家 更新时间:2023-10-31 01:56:58 24 4
gpt4 key购买 nike

我的程序中有线程,我想将字符放入流中并在另一个线程中读取它,但是在 std::cin.putback() 之后我需要从键盘写一些东西来“唤醒”std::cin在主要功能中。我可以做一些自动阅读的事情吗?

最佳答案

这不是流的工作方式。 std::cin 将来自程序外部的数据读取到标准输入,而 putback 只允许保留一个您实际刚刚读取的字符返回缓冲区,以便下次调用 operator>>(或 getgetline 或其他读取方法)时重新解析。

如果你想在线程之间进行通信,你应该使用来自某个线程库的消息队列,例如Boost提供了一个像样的可移植。

不可能使用流,至少不能使用标准库提供的流,因为 stringstream 不是线程安全的并且 fistream/fostream 无法从原始文件句柄创建,因此您无法将它们与 POSIX pipe 函数结合使用。可以将消息队列包装在流中(并且 boost 为您提供了足够的工具来做到这一点),但原始消息队列 API 可能是合适的。

关于c++ - std::cin.putback() 和 "wake up"它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6264137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com