【发布时间】:2021-01-10 12:12:20
【问题描述】:
请查看此代码 sn-p
std::istringstream s("abc");
std::istreambuf_iterator<char> i1(s), i2(s);
std::cout<< "i1 returns "<<*i1<<'\n'
<< "i2 returns "<<*i2<<'\n';
++i1;
std::cout<<"after incrementing i1, but not i2\n"
<<"i1 returns "<<*i1<<'\n'
<<"i2 returns "<<*i2<<'\n';
++i2; // this makes the apparent value of *i2 to jump from 'a' to 'c'
std::cout << "after incrementing i2, but not i1\n"
<< "i1 returns " << *i1 << '\n'
<< "i2 returns " << *i2 << '\n';
我得到了类似的输出
a
a
b
b
c
c
这与我的预期完全不同,因为 i1 和 i2 是两个不同的迭代器。
有人帮我个忙吗?
【问题讨论】:
-
你期待什么?
-
另外,您在代码中的注释暗示您第二次得到“b a”,但您的输出有“b b”,并且缺少您输出的其他字符串。请附上您提供的 sn-p 的真实输出