gpt4 book ai didi

c++ - 为什么连续的 istream_iter 对象会递增迭代流?

转载 作者:行者123 更新时间:2023-12-01 14:20:20 29 4
gpt4 key购买 nike

为什么下面的代码会输出c

// main.cpp
#include <iostream>
#include <sstream>
#include <iterator>

int main( int argc, char* argv[] )
{
std::string p( "abcdefghijklmnopqrstuvwxyz" );
std::stringstream ss(p);
std::istream_iterator<char> i( ss );
std::istream_iterator<char> j( ss );
std::istream_iterator<char> k( ss );
std::cout << *k << std::endl;

return 0;
}

.

$ g++ --version
g++ (GCC) 9.2.1 20190827 (Red Hat 9.2.1-1)
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ g++ -g ./main.cpp && ./a.out
c

这有点像每个连续的 istream_iterator 实例都在隐式迭代 stringstream 的“内部内容”。为什么每个 istream_iterator 实例不是从其 istream_type 的开头开始?

最佳答案

是的,constructor of istream_iterator执行读取,ijk 使用相同的流,因此它们是交互的。

(强调我的)

3) Initializes the iterator, stores the address of stream in a data member, and performs the first read from the input stream to initialize the cached value data member.

关于c++ - 为什么连续的 istream_iter 对象会递增迭代流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61356433/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com