问题标签 [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.
c++ - 如何使用 std::copy 读取任意数量的值?
我正在尝试编写与此相反的操作:
它应该是这样的:
但是我坚持使用“结束”迭代器——输入插入器不能使用 std::advance ,我也不能使用具有相同源的两个流......
有什么优雅的方法可以解决这个问题吗?当然我可以使用 for 循环,但也许有更好的东西:)
c++ - 增加已经在流末尾的 istream_iterator 的结果是什么?
我查看了标准,但没有看到明显的答案。
假设我已经这样做了:
现在is
位于流的末尾并且等于std::istream_iterator<char>()
. 如果我再增加一次会发生什么?还是等于std::istream_iterator<char>()
?或 os 结果未定义?
该标准明确指出,如果位于流的末尾,*is
则为未定义的行为。is
但我还没有看到任何关于迭代超出流末端的东西......
编辑:
我问是因为我偶然发现了一些类似这样的代码:
c++ - getline 与 istream_iterator
如果您正在从文件中逐行输入(将行读入字符串,用于标记化),是否有理由优先使用 getline 或 istream_iterator。
c++ - 使用 istream_iterator 并从标准输入或文件中读取
我正在用 Microsoft Visual C++ 编写,我希望我的程序可以从标准输入或使用istream_iterator
. 谷歌搜索互联网并没有显示我认为它必须多么简单。例如,我可以很容易地编写它并从标准输入中读取:
或者我可以写这个并从文件中读取:
但是我如何将这两者结合起来,以便一个简单的(argc == 2)
检查让我用文件流或标准输入初始化我的输入流迭代器并继续我的快乐方式?
c++ - 为什么我不能用未命名的临时构造 std::istream_iterator?
g++ 允许从 ifstream 实例构造 istream_iterator:
...但它不允许使用未命名的临时进行相同的构造:
这给出了:
错误:没有匹配函数调用 'std::istream_iterator, ptrdiff_t>::istream_iterator(std::ifstream)'</p>
有谁知道为什么这不起作用?- 谢谢!
c++ - 从 istream 复制永远不会停止
这段代码无限运行:
我期待的行为是当我按下回车键时它会停止。
然而事实并非如此。
buff 是一个字符向量。
c++ - istream_iterator 泄漏内存
好的,你们对我的上一个问题很有帮助,所以我会尝试另一个。这也是作业,虽然最后一个很旧,但已经提交,正在等待标记。因此,如果有什么会咬我,那可能就是这个问题。我已经混淆了班级名称等,因为仍然可以提交作业(对于其他学生)。
我有一个类,它的唯一成员是指向对象的指针。此类被构造为从它当前持有的指针公开某些操作 -Object *o_
这是Object{1, 2, 3, ...}
. 现在,我可以在没有任何内存泄漏或崩溃的情况下执行以下操作。
所有这些都有效,并且没有内存泄漏。但是,如果我尝试从带有 a 的文件中读取内容,istream_iterator<ObjectPtr>
它就会开始泄漏。ObjectPtr 是唯一处理动态内存的类,Object *o_
它要么设置为 NULL,要么由Object{1, 2, 3, ...}
.
要读取的文件如下所示
ObjectPtr
用于读取这些值的友元函数看起来像
在这里的某个地方,它开始在我身上独角兽,我真的很想知道为什么。
简而言之 - istream_iterator 在赋值和复制构造函数正常工作时泄漏内存,这让我相信类Object{1, 2, 3, 4, ..}
的构造正确,问题出在operator>>
.
c++ - 为什么 istream_iterator抛出 std::bad_cast?
到底是怎么回事?
我stream.write(some_array, sizeof(some_array)
在构建迭代器之前尝试过,但无济于事。
谢谢。
c++ - 无法使用 wistringstream 实例化 istring_iterator
我正在尝试使用此线程中找到的方法拆分字符串,但我正在尝试将其调整为 wstring。但是,我偶然发现了一个奇怪的错误。检查代码:
确切的错误信息是:
我认为它不能使用传递的实例化 istream_iterator iss
(这是w istringstream 而不是 istringstream)。这是在使用 XCode 和 GCC 4.2 的 Mac 上。而且 AFAIK 没有 wistring_iterator 或类似的东西。
当我使用非 wstring 版本时,它可以完美运行。如您所见,我已将声明更改为 use wstring
、wistringstream
s 和vector<wstring>
,只是替换了所有内容以使用宽版本。
什么可能导致这种情况,为什么它不接受 wstring 版本?