C++ 提取 istream 的内容并复制到另一个

C++ Extract the contents of an istream and copy to another

我想知道如何提取一个 istream 的内容并将其保存在另一个 istream 中。似乎显式复制似乎不适用于流,所以我想知道是否可以实现这一点。

您不能写入 istream("i" 表示输入)。但是如果你想创建一个新的,你可以:

vector<char> str;
copy(istream_iterator<char>(cin), istream_iterator<char>(), back_inserter(str));
istringstream result(str);

现在您有一个新的 istream,其中包含来自 cin(或任何其他现有的 istream)的内容。

看来您只是想要更改缓冲区:

int main()
{
    std::istream copy(nullptr);
    copy.rdbuf(std::cin.rdbuf());
    std::cin.rdbuf(nullptr);

    for (std::string word; copy >> word; ) {
        std::cout << word << ' ';
    }
}