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 回答