StringReserve

指定されたサイズのバッファをメモリ内の文字列用に予約します。

bool  StringReserve(
  string&    string_var,      // 文字列
  uint       new_capacity     // 文字列を格納するバッファのサイズ
  );

パラメータ

string_var

[in][out] バッファサイズが合わせてサイズを変更する文字列

new_capacity

[in] 文字列に必要なバッファサイズ。new_capacityのサイズが文字列の長さより小さい場合、現在のバッファのサイズは変わりません。

戻り値

実行成功の場合はtrue、それ以外の場合はfalseエラーコードを受け取るには、GetLastError()関数が呼び出されるべきです。

注意事項

一般的に、文字列サイズは文字列を格納するためのバッファのサイズと等しくありません。文字列を作成するとき、適切なバッファは通常マージンを持って割り当てられます。StringReserve()関数を使用すると、バッファサイズを管理し、将来の操作に最適なサイズを指定できます。

StringInit()と異なり、StringReserve()関数は文字列の内容を変更せず、文字で埋めません。

例:

void OnStart()
 {
  string s;
//--- StringReserveを使わずに動作速度を確認する
  ulong t0=GetMicrosecondCount();
  for(int i=0; i< 1024; i++)
     s+=" "+(string)i;
  ulong msc_no_reserve=GetMicrosecondCount()-t0;
  s=NULL;
//--- StringReserveを使用して同じことをする
  StringReserve(s,1024 * 3);
  t0=GetMicrosecondCount();
  for(int i=0; i< 1024; i++)
     s+=" "+(string)i;
  ulong msc_reserve=GetMicrosecondCount()-t0;
//--- 時刻を確認する
  Print("Test with StringReserve passed for "+(string)msc_reserve+" msc");  
  Print("Test without StringReserve passed for "+(string)msc_no_reserve+" msc");        
/* 結果:
    Test with StringReserve passed for 50 msc
    Test without StringReserve passed for 121 msc
*/
 }

参照

StringBufferLenStringSetLengthStringInitStringSetCharacter