Редактировать: Я предполагаю, что вы хотите скопировать все содержимое потока, а не только одно значение. Если вы хотите прочитать только одно слово, проверьте ответ 1800.
Очевидное решение - циклическое копирование слова за раз, но вы можете сделать это проще, как хороший вкладчик:
#include <iostream>
#include <iterator>
...
std::istream i;
std::copy(std::istream_iterator<char>(i), std::istream_iterator<char>(), std::ostream_iterator<char>(std::cout));
Stream_iterators внутренне используют операторы << и >>, что означает, что они будут игнорировать пробелы. Если вам нужна точная копия, вы можете вместо этого использовать std :: istreambuf_iterator и std :: ostreambuf_iterator. Они работают с базовыми (неформатированными) потоковыми буферами, поэтому не пропускают пробелы, не переводят символы новой строки или что-либо еще.
Вы также можете использовать:
i >> std::noskipws;
для предотвращения исчезновения пробелов. Однако обратите внимание, что если ваш поток представляет собой двоичный файл, некоторые другие символы могут быть закрыты операторами >>
и <<
.