3

私は、バイナリファイルのファイルからバイトを16バイトのグループで読み取り(理由は聞かないでください)、それらを変更してから別のファイルに書き込む小さなプログラムを書いています。

この関数は、最初に次のような関数に渡していfstream::readたバッファに読み込みます。char *

char* modify (char block[16], std::string key)

変更が行われ、blockその後返されました。SO の投稿をローミングすると、std::vector<char>. 私のすぐ次の心配は、 a を a に変換する方法でしchar *std::vector<char>。もう一度、SOは私に答えをくれました

しかし、今私が疑問に思っているのは、std::vector<char>の代わりに使用するのが非常に良いアイデアである場合char*、なぜfstream関数char*はまったく使用するのですか?

また、そもそもchar*fromfstreamを toに変換するのは良い考えですか?std::vector<char>

編集:fstream::readオブジェクトにデータを直接書き込むために使用されるため、char *必要であることがわかりました。質問を修正する必要があります。まず、なぜオーバーロードされた関数がないのfstream::readですか? そして第二に、私が書いたプログラムでは、どちらがより良い選択肢ですか?

4

2 に答える 2

1

ベクトルで使用するには、ベクトルへのポインターを渡さないでください。代わりに、ベクター コンテンツへのポインターを渡します。

vector<char> v(size);
stream.read(&v[0], size);
于 2013-03-12T05:41:13.567 に答える