Это не так, как работают потоки.std::cin
считывает данные, поступающие извне вашей программы, на стандартный ввод, а putback
позволяет сохранить только символ , который вы на самом деле просто прочитали , обратно в буфер для повторного анализа при следующем вызове operator>>
(или get
или getline
или другой метод чтения).
Если вы хотите общаться между потоками, вам следует использовать очередь сообщений из некоторой библиотеки потоков, например, Boost предоставляетнеплохой переносимый.
Невозможно использовать потоки, по крайней мере те, которые предусмотрены стандартной библиотекой, потому что stringstream
не является поточно-ориентированным и fistream
/ fostream
не может быть создан издескриптор необработанного файла, поэтому вы не можете объединить их с функцией POSIX pipe
.Можно было бы обернуть очередь сообщений в поток (и boost дает вам достаточно инструментов для этого), но API сырой очереди сообщений, вероятно, подойдет.