[#BloombergLP-bslstl-StringRefImp-0c] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslstl.adoc[bslstl]::StringRefImp :relfileprefix: ../../ :mrdocs: Provide a non‐owning reference to a contiguous character sequence. == Synopsis Declared in `<bslstl_stringref.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class CHAR_TYPE> class StringRefImp : public xref:BloombergLP/bslstl/StringRefData-04.adoc[StringRefData<CHAR_TYPE>] ---- == Description This class provides a reference‐semantic‐like (see below) mechanism that allows `const` `std::string` values, which are represented externally as either an `std::string` or null‐terminated c‐style string (or parts thereof), to be treated both uniformly and efficiently when passed as an argument to a function in which the string's length will be needed. The interface of this class provides a subset of accessor methods found on `std::string` (but none of the manipulators) ‐‐ all of which apply to the referenced string. But, because only non‐modifiable access is afforded to the referenced string value, each of the manipulators on this type ‐‐ assignment in particular ‐‐ apply to this string‐reference object itself (as if it had pointer semantics). Hence, this class has a hybrid of reference‐ and pointer‐semantics. This class: * supports a complete set of _value‐semantic_ operations * except for `bdex` serialization * is _exception‐neutral_ (agnostic) * is _alias‐safe_ * is `const` _thread‐safe_ For terminology see `bsldoc_glossary`. == Base Classes [cols="1,4"] |=== | Name| Description | `xref:BloombergLP/bslstl/StringRefData-04.adoc[StringRefData<CHAR_TYPE>]` | This class is an intermediate link between `bslstl::StringRef` used in BDE and `bsl::string_view` and is kept only for compatibility with legacy code. |=== == Type Aliases [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/StringRefImp-0c/const_iterator.adoc[`const_iterator`] | Alias for a constant iterator over the characters of this ref. | xref:BloombergLP/bslstl/StringRefImp-0c/const_reference.adoc[`const_reference`] | This `typedef` is an alias to `reference`. | xref:BloombergLP/bslstl/StringRefImp-0c/const_reverse_iterator.adoc[`const_reverse_iterator`] | This `typedef` is an alias to `bsl::reverse_iterator<const_iterator>`. | xref:BloombergLP/bslstl/StringRefImp-0c/difference_type.adoc[`difference_type`] | This `typedef` is an alias to `std::ptrdiff_t`. | xref:BloombergLP/bslstl/StringRefImp-0c/iterator.adoc[`iterator`] | This `typedef` is an alias to `value_type const *`. | xref:BloombergLP/bslstl/StringRefImp-0c/reference.adoc[`reference`] | This `typedef` is an alias to `value_type const&`. | xref:BloombergLP/bslstl/StringRefImp-0c/size_type.adoc[`size_type`] | Standard Library general container requirements. | xref:BloombergLP/bslstl/StringRefImp-0c/value_type.adoc[`value_type`] | Alias for a constant character type stored in this string ref. |=== == Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/StringRefImp-0c/2constructor-07.adoc[`StringRefImp`] [.small]#[constructor]# | Constructors | xref:BloombergLP/bslstl/StringRefImp-0c/assign-0d.adoc[`assign`] | `assign` overloads | xref:BloombergLP/bslstl/StringRefImp-0c/begin.adoc[`begin`] | Return an iterator to the first character of the referenced string. | xref:BloombergLP/bslstl/StringRefImp-0c/compare.adoc[`compare`] | Lexicographically compare this string with `other`. | xref:BloombergLP/bslstl/StringRefImp-0c/data.adoc[`data`] | Return a pointer to the first character of the referenced string. | xref:BloombergLP/bslstl/StringRefImp-0c/empty.adoc[`empty`] | Return `true` if this string reference is empty. | xref:BloombergLP/bslstl/StringRefImp-0c/end.adoc[`end`] | Return an iterator past the last character of the referenced string. | xref:BloombergLP/bslstl/StringRefImp-0c/isEmpty.adoc[`isEmpty`] | Return `true` if this object represents an empty string value, and `false` otherwise. This object represents an empty string value if `begin() == end()`. | xref:BloombergLP/bslstl/StringRefImp-0c/length.adoc[`length`] | Return the length of the string referred to by this object. Note that this call is equivalent to `end() ‐ begin()`. | xref:BloombergLP/bslstl/StringRefImp-0c/operator_subs.adoc[`operator[]`] | Return a reference to the character at the specified `index`. | xref:BloombergLP/bslstl/StringRefImp-0c/rbegin.adoc[`rbegin`] | Return a reverse iterator to the last character of the string. | xref:BloombergLP/bslstl/StringRefImp-0c/rend.adoc[`rend`] | Return a reverse iterator before the first character of the string. | xref:BloombergLP/bslstl/StringRefImp-0c/reset.adoc[`reset`] | Reset this string reference to the empty default‐constructed state. | xref:BloombergLP/bslstl/StringRefImp-0c/size.adoc[`size`] | Return the number of characters in the string referred to by this object. Note that this call is equivalent to `end() ‐ begin()`. | xref:BloombergLP/bslstl/StringRefData-04/2conversion.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration<StringRefData, is_trivially_copyable>`] | Nested trait declaration for `bsl::is_trivially_copyable`. | xref:BloombergLP/bslstl/StringRefImp-0c/2conversion-09.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration<StringRefImp, is_trivially_copyable>`] | Nested trait declaration for `bsl::is_trivially_copyable`. | xref:BloombergLP/bslstl/StringRefImp-0c/2conversion-0d.adoc[`operator std::basic_string<CHAR_TYPE>`] | Return an `std::basic_string` (synonymous with `std::basic_string`) having the value of the string bound to this string reference. |=== == Static Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/StringRefData-04/cStringLength.adoc[`cStringLength`] | Return the number of `CHAR_TYPE` characters in the specified null‐terminated `data` string, up to but not including the terminal null value. |=== == Non-Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/operator_plus-00.adoc[`operator+`] | Return the concatenation of the specified `lhs` string ref and the specified `rhs` `std::basic_string` value. | xref:BloombergLP/bslstl/operator_plus-02.adoc[`operator+`] | Return a `bsl::string` having the value of the concatenation of the strings referred to by the specified `lhs` and `rhs` values. | xref:BloombergLP/bslstl/operator_plus-05.adoc[`operator+`] | Return the concatenation of the specified `lhs` string ref and the specified `rhs` `bsl::basic_string` value. | xref:BloombergLP/bslstl/operator_plus-076.adoc[`operator+`] | Return the concatenation of the specified string ref and C string. |=== == Template Parameters [cols="1,4"] |=== | Name| Description | *CHAR_TYPE* | character type of the referenced character sequence. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#