【发布时间】:2020-04-22 02:45:50
【问题描述】:
为什么下面的代码会输出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 的开头开始?
【问题讨论】:
标签: c++ stringstream istream-iterator