And*_*ian 1 c++ fstream c++11 stdarray
我已经阅读了很多关于在C++中不使用C风格的东西,而是使用像std :: array,std :: vector或std :: string这样的容器.
现在我试图用文件流读取和写入小二进制文件并将其存储在std :: array中.
看起来std :: fstream的read和write方法只适用于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;
}
Run Code Online (Sandbox Code Playgroud)
byte_t只是一个
typedef char byte_t;
Run Code Online (Sandbox Code Playgroud)
有用.但这是做这件事的好方法吗?如果不是,还有其他方法吗?我应该使用byte_t []吗?
testFile.read(testArray.data(), testArray.size());
outTestFile.write(testArray.data(), testArray.size());
Run Code Online (Sandbox Code Playgroud)
注意使用.size()而不是幻数.
您也不需要.close()文件.在fstream析构函数会为你做的.
| 归档时间: |
|
| 查看次数: |
2080 次 |
| 最近记录: |