这里有一个精神上非常相似的问题。不幸的是,这个问题没有引起太多的回应——我想我会问一个更具体的问题,希望可以提出一种替代方法。
我正在将二进制文件写入std::cin
(使用tar --to-command=./myprog
)。二进制文件恰好是一组浮点数,我想将数据放入std::vector<float>
- 理想情况下是 c++ 方式。
std::vector<char>
我可以很好地 生成一个(感谢这个答案)
#include <fstream>
#include <iostream>
#include <iterator>
#include <algorithm>
#include <vector>
int
main (int ac, char **av)
{
std::istream& input = std::cin;
std::vector<char> buffer;
std::copy(
std::istreambuf_iterator<char>(input),
std::istreambuf_iterator<char>( ),
std::back_inserter(buffer)); // copies all data into buffer
}
我现在想将 mystd::vector<char>
转换为 a std::vector<float>
,大概是 withstd::transform
和一个进行转换的函数(例如 achar[2]
到 a float
)。然而,我正在苦苦挣扎,因为我std::vector<float>
的元素将是std::vector<char>
. 如果我可以以 2 的步幅进行迭代,那么我想我会很好,但从前面的问题来看,我似乎不能这样做(至少不能优雅地)。