c++ - 使用 std::copy 从 ifstream 读取十六进制值序列

标签 c++

考虑一个包含以十六进制表示法表示的整数序列的文件。我可以像这样流式传输它们:

using namespace std;
ifstream infile(fname);
unsigned int i;
vector<unsigned int> vals;
while (infile >> std::hex >> i){
    vals.push_back(i);
}

如果我想用 istream_iterator 做同样的事情怎么办?

/// borks on hex:
copy(istream_iterator<unsigned int>(infile),
    istream_iterator<unsigned int>(), back_inserter(ref_data));

有没有办法告诉 istream_iterator 如何采用十六进制表示法?

最佳答案

同理:

copy(istream_iterator<unsigned int>(infile >> std::hex),
     istream_iterator<unsigned int>(),
     back_inserter(ref_data));

关于c++ - 使用 std::copy 从 ifstream 读取十六进制值序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30937825/

相关文章:

c++ - 我应该修改什么来防止 C++ 线程死锁

c++ - ifstream 无故失败?

c++ - 如何在没有 emplace_back() 的情况下将具有昂贵 dtor 的对象添加到 vector 中

c++ - 使 std::atomic<> 对象具有限定符 - volatile 是否有意义?

c++ - 使用 cublas 设备 API 计算矩阵行列式

c++ - 我如何告诉 wc 停止阅读?

c++ - Valgrind 输出和 rdtsc 不一致......为什么会这样?

c++ - 宏输出说明

c++ - 避免重新定义预处理器变量

c++ - 解决浮点舍入问题 C++