[#bsl-String_ClearProctor] = xref:bsl.adoc[bsl]::String_ClearProctor :relfileprefix: ../ :mrdocs: This component private `class` implements a proctor that sets the length of a string to zero, and, if `release` is not called, will restore that string upon it's destruction. The intended usage is to implement `assign` methods in terms of `append` (by clearing the string before appending to it), while maintaining the strong exceptions guarantee. Note that after constructing this proctor for a string `s`, the invariant `s[s.length()]== CHAR_TYPE()` is violated for non‐empty `s`. This invariant will be restored by either a successful `append` or by the proctor's destructor if an exception is thrown. Note that the template parameter was renamed from STRING_TYPE to FULL_STRING_TYPE due to a name clash with a define elsewhere in the code base (see DRQS 112049582). == Synopsis Declared in `<bslstl_string.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class FULL_STRING_TYPE> class String_ClearProctor; ---- == Member Functions [cols="1,4"] |=== | Name| Description | xref:bsl/String_ClearProctor/2constructor.adoc[`String_ClearProctor`] [.small]#[constructor]# | Create a `String_ClearProctor` for the specified `stringPtr`, and set both the length of `stringPtr` to 0 and the first character of `stringPtr` to `CHAR_TYPE()`. | xref:bsl/String_ClearProctor/2destructor.adoc[`~String_ClearProctor`] [.small]#[destructor]# | Destroy this object, and if `release` has not been called, restore the original state of the string supplied at construction. | xref:bsl/String_ClearProctor/release.adoc[`release`] | Release the proctor indicating that the string state need not to be restored. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#