问题标签 [istream-iterator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4832 浏览

c++ - 简单的 istream_iterator 问题

我是 C++ 新手,如果这是一个愚蠢的问题,我很抱歉。我似乎无法弄清楚为什么这不起作用。它复制到第一个向量中,并且似乎跳过了第二个复制调用。

我想使用复制函数将 istream_iterator 输入读入任意数量的向量(每个向量一次调用复制)。换句话说:我希望能够在控制台中输入“1 2 3 4 5 ctrl+d”并将 1,2,3,4,5 输入到第一个向量中。然后在控制台中输入“6 7 8 9 10 ctrl+d”并将 6,7,8,9,10 输入到第二个向量中。

问题是,在我在第一个向量中输入一些输入并按 control+d 后,cin 的 istream_iterator 仍然等于 istream_iterator(),无论 cin 的失败状态如何。这会导致每次对“复制”的后续调用都失败(因为 istream_iteratorcin 已经等于程序解释为 eof 的 istream_iterator())。所以我的问题是:我需要做什么来“重置”迭代器以及 cin 流?cin.clear() 确实清除了所有失败位。然而 istream_iterator(cin) 仍然等于 istream_iterator() 无论如何。据我了解,绑定到流的 istream_iterators 仅应在流处于失败状态时等于默认的 istream_iterator 值。我错过了什么?

0 投票
3 回答
1168 浏览

c++ - in(std::cin) :这是什么意思?

在 Boost 的第一个示例中,in(std::cin)使用了。我认为in()得到一个istream并创建某种迭代器。但是,我找不到任何详细解释它的 C++ 文档。你能帮我找一个吗?

这是 Boost 网页中示例的复制和粘贴:

0 投票
1 回答
1326 浏览

c++ - 使用 ifstream 复制算法

以下代码的行为不像我预期的那样。请帮助我了解它是如何工作的。

我的自定义 operator>> 被调用了两次,但我希望它只被调用一次,因为内容是:

约翰:四十:21-5821-0

0 投票
2 回答
433 浏览

c++ - 使用模板时出现奇怪的错误字符串(输入迭代器开始,输入迭代器结束);

给定这样的代码段:

该代码使用 istream_iterator 从文件构造字符串。

请注意,字符串构造函数的第一个参数用一对括号括起来。如果我省略括号,则会出现错误。在 VC++ 2008 中,会出现链接错误。在 G++ 中,代码输出错误。

我对括号感到很奇怪。有什么区别,为什么?

0 投票
2 回答
1128 浏览

c++ - istream_iterator 行为

我有两段代码。它们在单独使用时可以正常工作main()

当这两部分一起使用时,即

这里第一部分有效,但第二部分给出输出:Enter Three Strings : , , ,。我想知道这种行为背后的原因是什么?

谢谢。

0 投票
2 回答
291 浏览

c++ - Priority_queue 和输入流迭代器

如您所见,我有一个将 cin 转移到优先队列的学校项目。好吧,我“有点做到了……我所做的是输入istream_iterator以列出

然后到priority_queue,从长远来看,我想这是非常低效的。所以有没有办法在没有中间人的情况下直接将cin转移到priority_queue。我试过这样做,但复制功能不会让我有priority_queue作为争论。

0 投票
2 回答
2726 浏览

c++ - 为什么 range-for 找不到我的 std::istream_iterator 的 begin 和 end 重载?

我有这样的代码

其中std::istream_iterator<std::string>begin()定义end() 如下

这也是Mark Nelson在 Dobb 博士的文章中所写的内容。唉,代码无法在我的 Visual Studio 2012 上编译并显示错误消息

错误 C3312:找不到类型“std::istream_iterator<_Ty>”的可调用“开始”函数

错误 C3312:找不到类型“std::istream_iterator<_Ty>”的可调用“结束”函数

问题:有什么我没有注意到的,编译器中的错误(不太可能,但以防万一)或者......嗯,有什么想法吗?


正如Xeo 所建议的那样,这个问题得到了很大的清理。为了提供更多背景和参考,这与我在 Stackoverflow 上的另一个问题有关,我想知道如何使基于行的解析比通常的循环更干净。从互联网上进行了一些编码和检查,我有一个工作草图如下

但我试图纠正一些轻微的障碍。我认为写成无法编译的代码看起来会更自然,而不像

请注意不同的迭代器。demeter_tokens的定义就像Nawaz在这里展示的那样(代码不重复),而istream_range的定义就像代码综合博客中的一样。我认为 begin 和 end 实现应该可以工作,正如前面提到的代码合成博客文章中所宣传的那样

最后一条规则(回退到独立的 begin() 和 end() 函数)允许我们以非侵入方式将现有容器调整为基于范围的 for 循环接口。

因此,我的问题具有所有(ir)相关背景。

0 投票
1 回答
382 浏览

c++ - 将EOF重新定义为字符串

我正在尝试编写一个程序来获取一系列单词,将它们放入一个向量中,然后对它们进行处理。我找到了一种可行的方法,即:

但是我正在尝试使用另一种方法来做到这一点,即:

但我不知道如何制作Quit平均 EOF,这将结束输入流并将单词放入向量中。如何使字符串"Quit"充当流终止符?

0 投票
3 回答
1128 浏览

c++ - 为什么 istreambuf_iterator 不能提前工作

我正在阅读Constructing a vector with istream_iterators这是关于将完整的文件内容读入字符向量。虽然我希望将文件的一部分加载到字符向量中。

这不起作用,因为提前不起作用,而上述问题的接受答案有效。为什么提前不工作istreambuf_iterator

返回 0。请有人解释发生了什么!

0 投票
4 回答
351 浏览

c++ - istream_iterator cin initialization waits for input

I've got this code snippet. The istream_iterator object is only defined and not used, so I expect that it won't do anything and application finish immediately. But when I run application, it will not finish before I provide some input. Why?

I'm compiling it on ArchLinux with: gcc 4.7.1, with command: g++ -std=c++11 filename.cpp