C++:实现write_padding函数

c++: implement write_padding function

本文关键字:padding 函数 write 实现 C++      更新时间:2023-10-16
以下

问题可能被问过,但我找不到。

我创建了一个类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来完成这个简单的任务。是否有更多的本机实现?

谢谢

首先,你的代码无效;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 );
}

会做这个伎俩。