问题标签 [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 回答
335 浏览

c++ - std::transform 与 std::istream_iterator

假设我有一个包含由空格分隔的数字的字符串。我想将数字插入整数向量中,其中每个数字减一。例如:

现在计划是std::transform与 a 结合使用std::istream_iterator<int>,如下所示:

不幸的是,这不起作用,因为std::transform期望target已经是正确的大小。所以我必须做

现在我有两个问题。如何target事先动态找到合适的尺寸?有没有更优雅的方式来实现实际目标?

0 投票
1 回答
80 浏览

c++ - C++ istreambuf_iterator 模板参数

基于这个问题:C++ 流混淆:istreambuf_iterator vs istream_iterator?on istreambuf_iterator,我的理解是这istreambuf_iterator是原始输入而不是格式化输入的迭代器。在那种情况下,假设 的模板参数istreambuf_iterator只能是与 相关的参数是否正确char,例如istreambuf_iterator<char>, istreambuf_iterator<wchar_t>,并且类似的东西istreambuf_iterator<int>是无效的?

0 投票
1 回答
57 浏览

c++ - c ++ fstream obj在istream_iterator中使用后回滚

如何重置迭代器状态或fstreamistream_iterator其他istream_iterator. 我在 obj 上尝试了seekp(ios_base::begin)clear()方法,fstream但这没有任何影响。

更新:
如果我使用

然后继续使用相同的istream_iterator第一个和第二个取消引用给出相同的值,所以需要使用

跳过重复项。

0 投票
0 回答
37 浏览

c++ - std::istream_iterator 不适用于 std::pair

简单的例子。此代码无法编译:

编译日志包含一堆替换错误并以

但是,如果我将 test_t 更改为这样的结构:

它编译得很好。或者,如果我保留 std::pair,但直接从 std::cin 调用 operator>>,它也可以正常工作:

有谁知道为什么会这样?或者它只是编译器中的一个错误或什么?

顺便说一句,编译器是 g++ (GCC) 8.2.1

0 投票
5 回答
628 浏览

c++ - 多流迭代器 C++

我的程序的目的是打开一个长度相同的m行的文本文件n,逐列读取文件并打印每一列。

例如,对于这个文本文件

我想打印

由于一行长度可以是 200 000 000,而列长度可以超过 10 000,所以我无法在矩阵中打开内存中的所有文件。

从理论上讲,我想要一个在空间上使用 O(m) 并在时间上使用 O(m*n) 的程序。

一开始,我不得不考虑这些解决方案:

  • 如果我看到每一列的所有文件,复杂度是 O(m*n²),
  • 如果我使用 seekg 和一个位置数组并从一个位置跳到另一个位置,复杂度是 O(m n log(n))。

最后一点,对于一些服务器问题,我只需要使用 STL。

我的最后一个想法是创建一个文件的迭代器数组,并在每行的开头初始化这些迭代器。之后,要查看下一列,我只需要增加每个迭代器。这是我的代码

可悲的是,它不起作用,我有这个东西作为输出

我认为问题在于迭代器数组iarray并不独立于istart,我该怎么做?

0 投票
0 回答
37 浏览

c++ - 使用自己的 istream_iterator 封装数据访问

我目前有基本上包含这些命令的代码:

ifs是一些std::ifstream。该代码有效。

我现在想对从另一个来源解压缩的数据使用相同的数据。基本上,我会读取我在某处缓冲的块,然后使用一个有点像fgetc. 这一切都有效,但将非 STL 与 STL 代码混合在一起。

我想做的是封装解压并提供一个迭代器,以便调用std::getline工作。我想那将是一个istream_iterator?这个类需要包含的最小值是多少?

更新:根据我得到的评论,以及http://www.voidcn.com/article/p-vjnlygmc-gy.html上的 streambuf 实现,我现在有了以下代码。作为测试用例,我使用了 zlib 压缩。代码不是很好,我很感激任何改进它的提示。

它可以按如下方式使用:

我曾尝试使用instd::unique_ptr中的gzip_streambuf成员gzip_istream,但由于缺少复制构造函数,所有尝试都失败了。我想摆脱新的/删除的东西,但不知道如何。

0 投票
1 回答
390 浏览

c++ - 我想在使用 istream 运算符读取输入后使用 cin

我使用 istream_iterator 从输入中读取整数(直到 eof)并将它们存储到向量中

之后我想读取一个整数(或者可能是另一种类型的值,例如字符串)。我怎样才能做到这一点?

  • 我应该使用 cin (也许以某种方式“清除”它)?我应该使用已经创建的 istream_iterator 吗?

“有问题的”代码如下。它不使用 cin 读取值。

0 投票
1 回答
30 浏览

c++ - 从 istream_iterator 理解相等

有人可以解释为什么这个 istream_iterator 代码。

工作,不只是写成

我不明白包含!_M_ok 的原因。提前致谢。

0 投票
4 回答
1241 浏览

c++ - 如何使 std::istream_iterator 只读到行尾?

具有以下代码:

我想让它只读取输入流直到行尾。我该怎么做std::istream_iterator

0 投票
2 回答
753 浏览

c++ - 如何使用 istream_iterator 从 ifstream 中读取带空格的字符串?

我想使用 逐行读取文本文件,istream_iterator但是当行中有空格时它会失败。

这是一个示例代码:

例如,在这个输入文件中: 1;3.14;bla bla -3;0.923;let me go

读取的第一个字符串是1;3.14;bla

有没有办法做到这一点,还是我应该放弃并使用getline