标签: input-iterator

我可以使用 istream_iterator<char> 将一些 istream 内容复制到 std::string 中吗?

我有一个istream并且需要将两个分隔符之间的内容复制到一个std::string. 我可以找到定界符' streampos,但是当尝试使用它istream_iterator<char>来遍历流的部分时,它不起作用。这是我尝试过的:

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


std::string copyToString( std::istream& is )
{
    is >> std::ws;

    auto someLength {10};

    std::istream_iterator<char> beg {is};

    is.seekg( someLength, std::ios::cur );

    //std::istream_iterator<char> end { is };
    std::istream_iterator<char> end { std::next(beg, someLength) };

    return std::string{ beg, end };
}




int main()
{
    std::stringstream ss;
    ss.str( "   { my string content  }" );

    std::cout << "\"" << copyToString( ss ) << "\"\n";

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我预计输出长度为 10 个字符,但它只是 …

c++ stdstring istream-iterator istream input-iterator

5
推荐指数
1
解决办法
222
查看次数