C++ 保存istream位置以供以后使用

C++ 保存istream位置以供以后使用,c++,stream,istream-iterator,C++,Stream,Istream Iterator,我编写了下面的代码,它应该可以保存istream迭代器。我想要的是将迭代器保留在给定位置,以便以后复制到字符串。在我将流重置为开始之前,这一切都很正常。输出是“teet”bis,我想要“tees”。有没有办法使迭代器独立于流位置 #include <iostream> #include <sstream> #include <iterator> int main(){ std::stringstream test; test <<

我编写了下面的代码,它应该可以保存istream迭代器。我想要的是将迭代器保留在给定位置,以便以后复制到字符串。在我将流重置为开始之前,这一切都很正常。输出是“teet”bis,我想要“tees”。有没有办法使迭代器独立于流位置

#include <iostream>
#include <sstream>
#include <iterator>

int main(){
    std::stringstream test;
    test << "test 123456\n";

    std::istream_iterator<char> it(test);
    std::cout << *it;
    it++;
    std::cout << *it;

    test.clear();
    test.seekg(0, std::ios::beg);

    std::cout << *it;
    it++;
    std::cout << *it;
}
#包括
#包括
#包括
int main(){
std::stringstream测试;

测试如何?
istream\u迭代器
是一个-这些都是严格的单次传递。典型的实现只是在当前流位置读取,只需向前看一个元素。更一般地说,如果不先查找该位置,就无法从特定位置的流中读取。
istream\u迭代器
不具备以下功能:它完全是根据流的公共接口来实现的。它的想法是使用std::copy和两个迭代器,但我不知道如何使用streampos来实现这一点。那就用?
istream_迭代器
是一个-这是一个典型的实现n只在当前流位置读取,只需向前看一个元素。更一般地说,如果不先找到某个位置,就无法从特定位置读取流。
istream\u迭代器
没有任何黑魔法可以让它做不可能的事情-它完全是根据st实现的我的想法是使用std::copy和两个迭代器,但我不知道如何使用streampos实现这一点。