0

おそらく次の質問があったのですが、見つかりませんでした。

クラスを作成しましたBinaryWriter
次のメソッドを実装する必要があります。

  /// Write zero bytes to file
  virtual void wr_padding( int padding_size); 

私は次の実装を持っています:

void BinaryWriter::wr_padding( int padding_size)
{
  char pad_arr[padding_size];
  memset(pad_arr, 0, padding_size);
  m_stream.write(pad_arr,padding_size);
}

どこ:

   std::ostream m_stream; 

私はこの実装に満足していません。この単純なタスク用の iOS API が欲しいと思っていました。もっとネイティブな実装はありますか?

ありがとう

4

1 に答える 1

2

まず、コードが有効ではありません。C スタイルの配列のサイズは定数でなければなりません。有効なバージョンは次のとおりです。

void
BinaryWriter::wr_padding( int padding_size)
{
  std::vector<char> pad_arr( padding_size );
  m_stream.write( &pad_arr[0], pad_arr.size() );
}

ただし: の最大値を設定できますpadding_sizeか? (たとえば、XDR では、4 を超えることはありません。) もしそうなら、次のような単純なもの:

void
BinaryWriter::wr_padding( int padding_size )
{
    static char const pad_arr[ max_padding_size ] = {};
    m_stream.write( pad_arr, padding_size );
}

トリックを行うでしょう。

于 2013-11-04T09:56:30.527 に答える