StringReserve

Reserviert die angegebene Größe in dem Puffer einer Zeichenkette im Speicher.

bool  StringReserve(
   string&    string_var,       // Zeichenkette
   uint       new_capacity      // Puffergröße zum Speichern der Zeichenkette
   );

Parameter

string_var

[in][out]  Zeichenkette, deren Puffer auf die angegebene Größe geändert werden soll.

new_capacity

[in]  geforderte neue Puffergröße der Zeichenkette. Wenn die neue Größe new_capacity kleiner ist als die Länge der Zeichenkette, wird die Größe des Puffers nicht verändert.

Rückgabewert

Im Falle einer erfolgreichen Ausführung wird 'true' zurückgegeben, andernfalls - false. Um eine Fehlernummer zu erhalten, muss man die Funktion GetLastError() aufrufen.

Hinweis

Im Allgemeinen ist die Größe der Zeichenkette nicht gleich der Größe des Puffers, der für die Speicherung der Zeichenkette vorgesehen ist. Beim Erstellen einer Zeichenkette wird der entsprechende Puffer in der Regel mit einer zusätzlichen Reserve versehen. Die StringReserve() Funktion ermöglicht die Verwaltung der Puffergröße und die Angabe der optimalen Größe für zukünftige Operationen.

Im Gegensatz zu StringInit() ändert die Funktion StringReserve() den Zeichenketteninhalt nicht und weist keine Zeichen zu.

Beispiel:

void OnStart()
  {
   string s;
//---- Prüfen der Ausführungsgeschwindigkeit, ohne StringReserve zu verwenden.
   ulong t0=GetMicrosecondCount();
   for(int i=0; i< 1024; i++)
      s+=" "+(string)i;
   ulong msc_no_reserve=GetMicrosecondCount()-t0;
   s=NULL;
//--- Jetzt noch einmal das Gleiche mit StringReserve
   StringReserve(s,1024 * 3);
   t0=GetMicrosecondCount();
   for(int i=0; i< 1024; i++)
      s+=" "+(string)i;
   ulong msc_reserve=GetMicrosecondCount()-t0;
//--- Prüfen der Zeit
   Print("Test mit StringReserve dauerte "+(string)msc_reserve+" msc");   
   Print("Test ohne StringReserve dauerte "+(string)msc_no_reserve+" msc");         
/* Ergebnis:
    Test mit StringReserve dauerte 50 msc
    Test ohne StringReserve dauerte 121 msc
*/
  }

Siehe auch

StringBufferLen, StringSetLength, StringInit, StringSetCharacter