Owned NUL-terminated wide buffer, safe to use across a DLL boundary. More...
#include <StormByte/wcstring.hxx>
Public Member Functions | |
Life | |
| WCString () noexcept | |
| Empty (null) buffer. | |
| WCString (const wchar_t *str) noexcept | |
Copies str. | |
| WCString (const WCString &other) noexcept | |
| Copy constructor. | |
| WCString (WCString &&other) noexcept | |
| Move constructor. | |
| ~WCString () noexcept | |
| Releases the buffer. | |
| WCString & | operator= (const WCString &other) noexcept |
| Copy assignment. | |
| WCString & | operator= (WCString &&other) noexcept |
| Move assignment. | |
Modifiers | |
| void | Reset (const wchar_t *str=nullptr) noexcept |
Replaces the buffer with a copy of str. | |
| void | swap (WCString &other) noexcept |
Swaps buffers with other. | |
Observers | |
| std::size_t | Length () const noexcept |
Character count (wcslen), or 0 when empty or null. | |
| wchar_t | operator[] (std::size_t index) const noexcept |
Character at index. | |
| operator bool () const noexcept | |
true when the buffer pointer is not null. | |
Conversions | |
| operator const wchar_t * () const noexcept | |
| View of the owned buffer. | |
| operator std::wstring_view () const noexcept | |
| Non-owning view of the text. | |
| operator std::wstring () const | |
| Copy of the text in the caller’s heap. | |
| std::wostream & | operator<< (std::wostream &stream) const |
Writes the text to stream. | |
Comparison | |
| bool | operator== (const WCString &other) const noexcept |
| Content equality. | |
| bool | operator!= (const WCString &other) const noexcept |
| Content inequality. | |
| bool | operator== (const wchar_t *str) const noexcept |
| Content equality with a C wide string. | |
| bool | operator!= (const wchar_t *str) const noexcept |
| Content inequality with a C wide string. | |
| std::strong_ordering | operator<=> (const WCString &other) const noexcept |
| Content order. | |
| std::strong_ordering | operator<=> (const wchar_t *str) const noexcept |
| Content order against a C wide string. | |
Owned NUL-terminated wide buffer, safe to use across a DLL boundary.
Wide counterpart of CString. Not a replacement of std::wstring. The class is minimal: copy, move, reset, a C wide-string view, Length, subscript, equality, ordering, swap and conversions.
operator const wchar_t* is the analogue of std::wstring::c_str(). The pointer is valid only until this object is destroyed, moved from, assigned or Reset. Using it afterwards is use-after-free.
operator std::wstring_view is explicit and follows the same lifetime. A null buffer yields an empty view. The view covers [0, Length()) and does not include the trailing NUL.
operator bool is true when the pointer is not null. A buffer constructed from L"" is empty (Length() == 0) and valid. A default-constructed object is null.
operator[] is an observer. Valid indices are [0, Length()]; Length() is the trailing NUL. A null buffer or an index past Length() is undefined and asserts when assertions are on.
Equality and <=> compare text, not addresses. Two nulls are equal. Null is not equal to L"". Null orders before any text.
operator std::wstring, operator std::wstring_view and operator<< are inline so they run in the caller’s translation unit.
|
noexcept |
Empty (null) buffer.
|
explicitnoexcept |
Copies str.
| str | Source; may be null. |
|
noexcept |
Copy constructor.
| other | Buffer to copy. |
|
noexcept |
Move constructor.
| other | Buffer to take. other becomes null. |
|
noexcept |
Releases the buffer.
|
noexcept |
Character count (wcslen), or 0 when empty or null.
|
inlineexplicitnoexcept |
true when the buffer pointer is not null.
L"" is valid and empty. A default object is null.
|
explicitnoexcept |
View of the owned buffer.
std::wstring::c_str().
|
inline |
Copy of the text in the caller’s heap.
|
inlineexplicitnoexcept |
Non-owning view of the text.
std::wstring::c_str().
|
inlinenoexcept |
Content inequality with a C wide string.
| str | May be null. |
|
inlinenoexcept |
Content inequality.
| other | Other buffer. |
|
inline |
Writes the text to stream.
| stream | Destination. |
stream.
|
noexcept |
Content order against a C wide string.
| str | May be null. |
|
noexcept |
Content order.
Null is less than any text.
| other | Other buffer. |
Copy assignment.
| other | Buffer to copy. |
Move assignment.
| other | Buffer to take. other becomes null. |
|
noexcept |
Content equality with a C wide string.
| str | May be null (treated as a null WCString). |
|
noexcept |
Content equality.
| other | Other buffer. |
|
noexcept |
|
noexcept |
Replaces the buffer with a copy of str.
| str | Source; may be null. |
|
noexcept |
Swaps buffers with other.
| other | Other buffer. |