是否可以将文件内容直接复制到 C++ STL 向量中
is it possible to copy file contents directly into a c++ stl vector?
我有一个被压缩成文件的STL向量。我想将文件解压缩到另一个向量中。文件内容非常大,所以我必须将其直接解压缩到矢量中。有没有好方法可以做到这一点?我看过很多例子,但它们都假设你正在从 c 样式数组复制到向量的数据存储中。
不知道"解压缩"是什么意思,但这里是将原始文件数据放入向量的方法。
#include <iterator>
#include <fstream>
std::vector<char> read_file(const std::string& file_name)
{
std::vector<char> result;
std::ifstream file(file_name);
std::copy(std::istream_iterator<char>(file), std::istream_iterator<char>(), std::back_inserter(result));
return result;
}
您的问题不是很清楚,但似乎您正在尝试执行以下操作:
std::ifstream inFile("your/binary/file", std::ifstream::in | std::ifstream::binary);
inFile.seekg(std::ifstream::beg);
int temp;
//Read file to the end
while(inFile.read(reinterpret_cast<char*>(&temp), sizeof(temp)))
{
//Store each int in the vector
myVector.push_back(temp);
}
在这里,我假设您正在尝试加载vector<int>
如果你正在读取文本文件,你可以使用 std::vector
的双迭代器构造函数:
std::vector<double> vec{
std::istream_iterator<double>{stream},
std::istream_iterator<double>{}
};
住在科里鲁
编辑:将数据读入向量,只需事先reserve()
它并将其data()
传递给:
std::vector<Element> vec;
vec.reserve(/* the number of elements to read */);
read(fd, vec.data(), number * sizeof(Element));
编辑第 2 个:事实上,不要。这不能正确地保持std::vector
的不变量,例如它的大小。
相关文章:
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 使用strcpy将char数组的元素复制到另一个数组
- 是否可以初始化不可复制类型的成员变量(或基类)
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 复制列表初始化的隐式转换的等级是多少
- 当从函数参数中的临时值调用复制构造函数时
- 有可能在Armadillo中复制MATLAB circshift方法吗
- 复制几乎为空的数组的最快方法
- 以下示例中如何避免代码复制?C++/库达
- 如果有一个模板构造函数只有一个泛型参数,为什么我必须有一个复制构造函数
- 为什么需要复制构造函数,在哪些情况下它们非常有用
- 不能将复制初始化与隐式转换的多个步骤一起使用
- 当有分配器意识的容器被复制/移动时,反弹分配器是否被复制/移走
- 为什么复制而不是移动数据元素?
- 文件系统:复制功能的速度秘诀是什么
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- 使lambda不可复制/不可移动