1

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 [] を使用する必要がありますか?

4

1 に答える 1

5

使用std::array::data:

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

.size()マジック ナンバーの代わりに を使用していることに注意してください。

.close()また、ファイルを保存する必要はありません。デストラクタがそれfstreamを行います。

于 2015-11-04T16:05:41.203 に答える