Partager via


CSimpleStringT::GetBuffer

Retourne un pointeur dans la mémoire tampon caractères interne de l'objet d' CSimpleStringT .

PXSTR GetBuffer( 
   int nMinBufferLength 
); 
PXSTR GetBuffer();

Paramètres

  • nMinBufferLength
    Le nombre minimal de caractères que la mémoire tampon de caractères peut contenir. Cette valeur n'inclut pas l'espace pour une marque de fin null.

    Si nMinBufferLength est plus grande que la longueur de la mémoire tampon actuel, GetBuffer perd le tampon actuel, le remplace par une mémoire tampon de taille demandée, et réinitialise le nombre de référence d'objet à zéro. Si vous avez précédemment appelé LockBuffer sur cette mémoire tampon, vous perdez le verrou de mémoire tampon.

Valeur de retour

Un pointeur d' PXSTR en mémoire tampon de caractères (se terminant par null) de l'objet.

Notes

Appelez cette méthode pour retourner le contenu de la mémoire tampon de l'objet d' CSimpleStringT . PXSTR retourné n'est pas une constante et ne sont donc pas la modification directe du contenu d' CSimpleStringT .

Si vous utilisez le pointeur retourné par GetBuffer pour modifier le contenu de la chaîne, vous devez appeler ReleaseBuffer avant d'utiliser toutes les méthodes de membre d' CSimpleStringT .

L'adresse retournée par GetBuffer peut ne pas être valide après l'appel à ReleaseBuffer car des opérations supplémentaires d' CSimpleStringT peuvent provoquer la mémoire tampon d' CSimpleStringT d'être réaffectées. La mémoire tampon n'est pas réaffectée si vous ne modifiez pas la longueur d' CSimpleStringT.

La mémoire tampon est automatiquement libérée lorsque l'objet d' CSimpleStringT est détruit.

Si vous maintenez la longueur de chaîne vous-même, vous ne devez pas ajouter le caractère NULL de fin. Toutefois, vous devez spécifier la longueur finale de chaîne lorsque vous libérez la mémoire tampon avec ReleaseBuffer. Si vous ajoutez un caractère NULL de fin, vous devez passer à 1 (la valeur par défaut) pour la longueur. ReleaseBuffer détermine la longueur de la mémoire tampon.

S'il y a de mémoire insuffisante pour répondre à la demande d' GetBuffer , à celle-ci lève une exception méthode un CMemoryException*.

Exemple

CSimpleString s(_T("abcd"), pMgr);

LPTSTR pBuffer = s.GetBuffer(10);
int    sizeOfBuffer = s.GetAllocLength();

// Directly access CSimpleString buffer
_tcscpy_s(pBuffer, sizeOfBuffer, _T("Hello")); 
ASSERT(_tcscmp(s, _T("Hello")) == 0);

s.ReleaseBuffer();   

Configuration requise

en-tête : atlsimpstr.h

Voir aussi

Référence

CSimpleStringT, classe

CSimpleStringT::GetBufferSetLength

CSimpleStringT::ReleaseBuffer