1

ユーザーにファイル名と要求されたファイルサイズの入力を求めるプログラムをC++で作成しました。0プログラムは、要求されたファイルサイズが実際のファイルサイズよりも大きいかどうかを確認し、要求されたファイルサイズに達するまで、ファイルの最後にヌル文字(コード付きの文字)を追加します。
私はこのように(fstreamで)それをしました:

for (blah blah) {
    file << '\0'; // ('file' is an fstream object)
}

そしてそれは私が望んでいたように機能しました。ハードディスクに多くの呼び出しを送信することでハードディスクを苦しめる可能性があるため、これは悪いコードであることを私は知っています(ちなみにそれは遅いです)。これはテスト上の理由のみでした。次に、この問題のために、NUL文字を格納する変数を作成し、変数全体を一度にファイルに保存することにしました(各文字を個別に保存することはありません)。
次に、問題が発生しました... NUL文字(ヌルターミネータとも呼ばれます)が原因で文字列が終了したため、これらのゼロを格納できませんでした。
文字の配列、文字列、さらには文字列ストリームを試しましたが、どれも機能しませんでした(文字列ストリームには興味深い点があります。使用したとき、ファイルの内容は次のようになりました:) 0x47c274。とにかく、思った通りに動作しませんでした。
ヌル文字の配列を格納する効率的な方法はありますか?

4

2 に答える 2

3

それらを文字の配列に格納し、ostream::writeを使用して配列をファイルに書き込みます。

于 2010-10-03T00:47:27.923 に答える
2

次に例を示します。

#include <algorithm>
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
  ofstream fout("pokemon");
  char buffer[1000];
  std::fill(buffer, buffer + 1000, '\0');
  fout.write(buffer, sizeof(char) * 1000);
  return 0;
}
于 2010-10-03T00:47:47.843 に答える