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

c++ - 为什么 istream_iterator(ifstream("test.txt")) 导致错误?

我试图编写一个代码来从名为“test.txt”的文件中读取字符串并将字符串写入标准输出。下面的代码运行良好:

但是,通过此修改,代码不再编译:

为什么这个版本不编译?

我使用的编译器是g++4.6.2,报错如下:

0 投票
0 回答
100 浏览

c++ - 使用 istream_iterator 和字符串读取文本文件

我想将文本文件读入字符串变量,但在执行以下指令后,字符串为空:

有人可以告诉我这个片段有什么问题吗?

0 投票
3 回答
1736 浏览

c++ - 将 std::ifstream 读取到行向量后丢失了一些字节

为了将我从输入文件中读取的内容复制到向量,我使用std::copy()Read an std::ifstream to a vector of lines 中的建议。

如果我使用,就会出现问题:

myVector变量中缺少我文件的第 16 个字节。

但是,如果我使用以下代码:

然后字节不再丢失。

我正在尝试解析 WAV 文件,我在这方面浪费了太多时间,我希望我能从中学到一些新东西。你能告诉我上面代码的第一个版本有什么问题吗?

0 投票
4 回答
364 浏览

c++ - 输入迭代器的值初始化

我正在阅读“Accelerated C++”一书的第 8 章。第 8.3 节是关于输入和输出迭代器的:

[...]

复制的第二个参数创建一个默认(空)istream_iterator,它不绑定到任何文件。istream_iterator 类型有一个默认值,其属性是任何已到达文件结尾或处于错误状态的 istream_iterator 似乎都等于默认值。因此,我们可以使用默认值来指示复制的“one-past-the-end”约定。

这就是我的理解:istream_iterator 是一个模板类,而 istream_iterator<int> 是模板的一个实例。编写 istream_iterator< int>() 会触发 istream_iterator< int> 对象的值初始化,这意味着零初始化 + 调用隐式默认构造函数 ( http://en.cppreference.com/w/cpp/language/value_initialization )。我认为 istream_iterator< int> 对象的默认初始化也可以正常工作(触发对默认构造函数的调用),所以我尝试了这个:

但这不会编译:

错误:“,”标记之前的预期主表达式

我不明白发生了什么事。欢迎任何解释。

0 投票
3 回答
773 浏览

c++ - C ++将用户输入加载到向量中

我正在尝试创建一个命令行应用程序,用户可以在其中输入命令和数据,但我并没有真正了解 istream_iterator 是如何工作的,我怎样才能将整个输入(直到输入)输入到向量中?现在它会在每个单词上创建一个新的 while 循环,这不是我们想要的。

0 投票
3 回答
287 浏览

c++ - 跑两个s 在同一个输入迭代器范围内并排

如果我想计算从 检索到的一堆数字的总和std::istream,我可以执行以下操作:

但是,如果我想计算它们的平均值,我需要累积两个不同的结果:

  • 总和 ( std::accumulate)
  • 总数 ( std::distance)

有没有办法“合并”这两种算法并在迭代器范围的单次传递中“并排”运行它们?我想做类似的事情:

这可能吗?

0 投票
1 回答
230 浏览

c++ - C++ 中 istream_iterator 的奇怪结果

当我向程序输入1 2 3 c(最后一个元素'c'是使cin状态为EOF)时,最终vin2将包含元素:2 3;但是,当我注释变量的声明时in_iter,相同的输入将vin2包含元素:1 2 3;如何变量的声明in_iter对这个程序有影响吗?谢谢!

0 投票
1 回答
735 浏览

c++ - 提升精神 istream 迭代器给出误报

因此,我试图在输入该文件时获得精神来解析该文件中的字符。如果可能的话,我宁愿不将完整的字符串读入内存。

这是我当前的相关代码, Rosters_Grammar 是我用来指定所需语法的语法文件。

出现的问题是我的解析总是因为某种原因成功。鉴于花名册语法,我可以说它正在读取输入的一部分,因为它正在执行相应的操作,并且完全按照正确输入的预期工作。但是解析器不会因输入错误而失败,它只是在文件的中途停止并返回 true。

我当前的文件内容是整数和字符串的重复,这样

45 布里干酪 23 butter_scotch

应该好好阅读并接受。像这样的字符串

《45苹果苹果苹果》

不应该是。然而,鉴于这种刺痛,解析器应该会失败。相反,它对“45 Apple”执行操作,然后为解析返回 true。我认为这与我的迭代器有关,但我不能确定。在上面发布的代码中,我将 qi::int_ 作为解析器,无论我的输入数据如何,它总是成功。所以我不相信我的语法文件应该与这里的问题无关。到目前为止,我让数据失败的唯一方法是使用 !qi::eps 作为我的解析器输入。

感谢任何人都可以给我的任何帮助!

编辑:在仔细研究之后,我实际上认为我的船长出于某种原因是问题所在。按照我的理解,phrase_parse 传递了 2 个迭代器、某种语法和一个跳过解析器。它基于跳过解析器对输入进行标记,并在语法中使用这些标记。

在不禁用迭代器类型的空格跳过的情况下,我的结果会解析出“45 appleappleapple”,并且只有“45 apple”才能成功。

0 投票
1 回答
149 浏览

c++ - istream_iterator 和惰性求值

考虑到istream_iterator懒惰评估,我想知道我是否可以依赖已初始化但从未取消引用或递增的迭代器来获取条件。

举个例子:

鉴于此代码示例,我的问题是:即使是空的,是否也可以(beg != eof)评估?truefile

0 投票
2 回答
1271 浏览

c++ - 使用 for_each 和 istream_iterator 遍历 C++ 中的文本文件以查找文件名

从事 C++ 硬件项目。我们获得了将目录中的所有 .dat 文件读取到单个 .txt 文件中的代码,然后我们需要从中提取值,没有特定的顺序。我们得到的代码是:

这给了我一个文本文件,其中包含比 .dat 文件名更多的信息,不过……卷信息、目录路径、文件数据等。

然后我们执行以下操作来读取文件,但我不明白这是如何工作的:

我一直在 cplusplus.com 上查看 istream_iterator 和 for_each 页面,但可以使用一些说明。这个 for_each 语句到底在做什么?

我认为它正在执行以下操作是否正确:

  • 从 istream 一次读取一个字符串(停在空白处)
  • 将该字符串传递给分析函数(以执行任何处理......在我的情况下尝试打开文件并读取值)
  • 一旦控制返回,继续执行此操作直到到达文件末尾或流失败