leg*_*s2k 2 c++ iterator binaryfiles istream-iterator ifstream
我正在阅读使用istream_iterators构造一个向量,这个向量是将一个完整的文件内容读入一个字符向量中.虽然我想将文件的一部分加载到字符向量中.
#include <iostream>
#include <fstream>
#include <iterator>
#include <vector>
#include <algorithm>
using namespace std;
int main(int argc, char *argv[])
{
ifstream ifs(argv[1], ios::binary);
istreambuf_iterator<char> beginItr(ifs);
istreambuf_iterator<char> endItr(beginItr);
advance(endItr, 4);
vector<char> data(beginItr, endItr);
for_each(data.cbegin(), data.cend(), [](char ch)
{
cout << ch << endl;
});
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为提前不起作用,而上述问题的接受答案有效.为什么不提前工作istreambuf_iterator?
也
endItr++;
endItr++;
endItr++;
endItr++;
cout << distance(beginItr, endItr) << endl;
Run Code Online (Sandbox Code Playgroud)
返回0.请有人解释发生了什么!
R. *_*des 10
为什么istreambuf_iterator没有提前工作?
有用.它推进了迭代器.问题是a istreambuf_iterator是一个输入迭代器而不是一个前向迭代器,这意味着它是一个单一的迭代器:一旦你推进它,你再也无法访问前一个状态.要做你想做的事,你可以简单地使用一个老式的for循环,数到4.
| 归档时间: |
|
| 查看次数: |
859 次 |
| 最近记录: |