c++ - 使用 istream_iterator 读取 N 个字符

标签 c++ vector iterator

<分区>

我有一个文件,想在 vector 中存储前 N 个字符。目前我阅读了所有字符,只取前 N 个字符。

std::ifstream stream(m_filename, std::ios::in | std::ios::binary);
...
...
// m_header is vector<unsigned cha>
m_header.insert(m_header.begin(),
           std::istream_iterator<unsigned char>(stream),
           std::istream_iterator<unsigned char>()); 

有没有办法使用 istream_iterator 只读取 N 个字符?

最佳答案

如果你真的想使用std::istream_iterator,一个解决方案可能是:

void foo() {
  std::ifstream stream;
  // open stream

  std::vector<unsigned char> v;

  std::copy_if(std::istream_iterator<unsigned char>(stream),
               std::istream_iterator<unsigned char>(),
               std::back_inserter(v),
               [](unsigned char) {
                 static constexpr int N = 3;
                 static int i = 0;
                 return ++i <= N;
               });
}

关于c++ - 使用 istream_iterator 读取 N 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50665142/

相关文章:

c++ - 共享内存中的 vector 结构

c++ - 错误:预期在 ‘.’ token 之前的不合格 ID - std::vector

C++方法链接导致析构函数被调用两次

c++ - 传递 const 大小的二维数组

javascript - 带有 three.js 的简单太阳系

c++ - 如何正确使用enable_if?

c++ - 可以定义一个 C++ 变量来接受任何双向迭代器吗?

java - 移动迭代器语句使代码编译

c++ - STL 算法逐元素乘法(无求和)

c++ - 派生类和基类对象的内存地址?