gpt4 book ai didi

c++ - istream_iterator cin 初始化等待输入

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:05 24 4
gpt4 key购买 nike

我有这个代码片段。 istream_iterator 对象仅被定义而未被使用,因此我预计它不会执行任何操作并且应用程序会立即完成。但是当我运行应用程序时,在我提供一些输入之前它不会完成。为什么?

我在 ArchLinux 上编译它:gcc 4.7.1,命令:g++ -std=c++11 filename.cpp

#include <iterator>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
istream_iterator<char> input(cin);

return 0;
}

最佳答案

按照标准,

24.6.1.1 istream_iterator constructors and destructor [istream.iterator.cons]

istream_iterator(istream_type& s);

3 - Effects: Initializes in-stream with &s. value may be initialized during construction or the first time it is referenced.

所以这个程序是否会等待输入是不确定的。

但是,很难看出 istream_iterator可以以其他方式实现;根据 24.6.1:1,在构建后 [...] 迭代器读取并存储值 T ,所以如果读取没有发生在构造上,那么它需要发生在 operator *() const 上。免费 operator==(const istream_iterator<T> &, const istream_iterator<T> &) ,所以迭代器的所有内部状态都必须是 mutable .

关于c++ - istream_iterator cin 初始化等待输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12602657/

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