StringReserve

Riserva il buffer di una grandezza specificata per una stringa, in memoria.

bool  StringReserve(
   string&    string_var,       // stringa
   uint       new_capacity      // grandezza del buffer per la memorizzazione di una stringa
   );

Parametri

string_var

[in] [out] Stringa per cui dovrebbe cambiare la grandezza del buffer.

new_capacity

[in] Grandezza del buffer richiesta per una stringa. Se la grandezza new_capacity è inferiore alla lunghezza della stringa, la grandezza del buffer corrente non cambia.

Valore di ritorno

In caso di esecuzione riuscita, restituisce true, altrimenti - false. Per ricevere un codice errore, dovrebbe essere chiamata la funzione GetLastError().

Nota

Generalmente, la grandezza della stringa non è uguale alla grandezza del buffer inteso per memorizzare la stringa. Quando si crea una stringa, il buffer appropriato viene solitamente assegnato con un margine. La funzione StringReserve() consente di gestire la grandezza del buffer e specificare la grandezza ottimale per le operazioni future.

Diversamente daStringInit(), la funzione StringReserve() non modifica il contenuto della stringa e non la riempie di caratteri.

Esempio:

void OnStart()
  {
   string s;
//--- controlla la velocità dell'operazione senza usare StringReserve
   ulong t0=GetMicrosecondCount();
   for(int i=0; i< 1024; i++)
      s+=" "+(string)i;
   ulong msc_no_reserve=GetMicrosecondCount()-t0;
   s=NULL;
//--- ora, facciamo lo stesso usando StringReserve
   StringReserve(s,1024 * 3);
   t0=GetMicrosecondCount();
   for(int i=0; i< 1024; i++)
      s+=" "+(string)i;
   ulong msc_reserve=GetMicrosecondCount()-t0;
//--- controlla l'ora
   Print("Test con StringReserve passato per "+(string)msc_reserve+" msc");   
   Print("Test senza StringReserve passato per "+(string)msc_no_reserve+" msc");         
/* Risultato:
    Test con StringReserve passato per 50 msc
    Test senza StringReserve passato per 121 msc
*/
  }

Guarda anche

StringBufferLen, StringSetLength, StringInit, StringSetCharacter