std::array 和字节读取
std::array and bytes reading
我已经阅读了很多关于在 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 [] 吗?
testFile.read(testArray.data(), testArray.size());
outTestFile.write(testArray.data(), testArray.size());
注意使用 .size()
而不是幻数。
此外,您不需要 .close()
您的文件。 fstream
析构函数会为你做这件事。
我已经阅读了很多关于在 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 [] 吗?
testFile.read(testArray.data(), testArray.size());
outTestFile.write(testArray.data(), testArray.size());
注意使用 .size()
而不是幻数。
此外,您不需要 .close()
您的文件。 fstream
析构函数会为你做这件事。