【发布时间】:2011-07-22 09:34:42
【问题描述】:
有一个问题很像here。不幸的是,这个问题没有引起太多的回应——我想我会问一个更具体的问题,希望可以提出一种替代方法。
我正在将二进制文件写入std::cin(使用tar --to-command=./myprog)。
二进制文件恰好是一组浮点数,我想将数据放入 std::vector<float> - 理想情况下是 c++ 方式。
我可以很好地生成std::vector<char>(感谢this answer)
#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
}
我现在想将我的std::vector<char> 转换为std::vector<float>,大概使用std::transform 和一个进行转换的函数(例如,char[2] 到float)。但是我很挣扎,因为我的std::vector<float> 的元素数量将是std::vector<char> 的一半。如果我可以以 2 的步幅进行迭代,那么我想我会很好,但从上一个问题来看,我似乎不能这样做(至少不能优雅地)。
【问题讨论】:
-
为什么阅读
char的?为什么不是std::string的?目前还不清楚您希望能够输入什么,以及您想要完成什么。 -
@GMan,我想从输入到 cin 的二进制文件中完成 std::vector
- 然后我可以使用库函数来解码 std::vector。如果通过 stings 进行操作更容易,那很好(我不清楚如何用 cin 做到这一点)。 -
@Tom:二进制文件的格式是什么?
-
@GMan 它是一个 gnuplot 二进制文件 - 它是一组很长的浮点数,但并非所有的浮点数都是数据,例如,第一个是浮点数(一个整数表示为浮点数)
-
@Tom:字节序是否值得关注?
标签: c++ stl iterator stl-algorithm