gpt4 book ai didi

c++ - std::array 和字节读取

转载 作者:行者123 更新时间:2023-11-30 01:12:45 25 4
gpt4 key购买 nike

我读过很多关于在 C++ 中不使用 C 风格,而是使用 std::array、std::vector 或 std::string 等容器的文章。

现在我正在尝试使用文件流读写小型二进制文件并将其存储在 std::array 中。

看起来 std::fstream 的读写方法只能用于 C 风格的数组...

这就是我的想法:

int main(int argc, char **argv)
{
std::fstream testFile, outTestFile;
testFile.open("D:/mc_svr/another/t/world/region/r.0.0.mca", std::fstream::in | std::fstream::binary);
outTestFile.open("D:/mc_svr/another/t/world/region/xyz.xyz", std::fstream::out | std::fstream::binary);

std::array<byte_t, 8192> testArray;

testFile.read((char*) &testArray, 8192);
outTestFile.write((char*) &testArray, 8192);

testFile.close();
outTestFile.close();

return 0;
}

byte_t 只是一个

typedef char byte_t;

它有效。但这是这样做的好方法吗?如果不是,还有其他方法吗?我应该改用 byte_t [] 吗?

最佳答案

使用std::array::data :

testFile.read(testArray.data(), testArray.size());
outTestFile.write(testArray.data(), testArray.size());

请注意使用 .size() 而不是魔数(Magic Number)。

你也不需要.close()你的文件。 fstream 析构函数将为您执行此操作。

关于c++ - std::array 和字节读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33526413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com