|
|
| | CString () noexcept |
| | Empty (null) buffer.
|
| |
| | CString (const char *str) noexcept |
| | Copies str.
|
| |
| | CString (const CString &other) noexcept |
| | Copy constructor.
|
| |
| | CString (CString &&other) noexcept |
| | Move constructor.
|
| |
| | ~CString () noexcept |
| | Releases the buffer.
|
| |
| CString & | operator= (const CString &other) noexcept |
| | Copy assignment.
|
| |
| CString & | operator= (CString &&other) noexcept |
| | Move assignment.
|
| |
|
| void | Reset (const char *str=nullptr) noexcept |
| | Replaces the buffer with a copy of str.
|
| |
| void | swap (CString &other) noexcept |
| | Swaps buffers with other.
|
| |
|
| std::size_t | Length () const noexcept |
| | Character count (strlen), or 0 when empty or null.
|
| |
| char | operator[] (std::size_t index) const noexcept |
| | Character at index.
|
| |
| | operator bool () const noexcept |
| | true when the buffer pointer is not null.
|
| |
|
| | operator const char * () const noexcept |
| | View of the owned buffer.
|
| |
| | operator std::string_view () const noexcept |
| | Non-owning view of the text.
|
| |
| | operator std::string () const |
| | Copy of the text in the caller’s heap.
|
| |
| std::ostream & | operator<< (std::ostream &stream) const |
| | Writes the text to stream.
|
| |
|
| bool | operator== (const CString &other) const noexcept |
| | Content equality.
|
| |
| bool | operator!= (const CString &other) const noexcept |
| | Content inequality.
|
| |
| bool | operator== (const char *str) const noexcept |
| | Content equality with a C string.
|
| |
| bool | operator!= (const char *str) const noexcept |
| | Content inequality with a C string.
|
| |
| std::strong_ordering | operator<=> (const CString &other) const noexcept |
| | Content order.
|
| |
| std::strong_ordering | operator<=> (const char *str) const noexcept |
| | Content order against a C string.
|
| |
Owned NUL-terminated buffer, safe to use across a DLL boundary.
This is not a replacement or reimplementation of std::string. The class is minimal on purpose: copy, move, reset, a C-string view, Length, subscript, equality, ordering, swap and conversions.
operator const char* is the analogue of std::string::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::string_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 "" 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 "". Null orders before any text.
operator std::string, operator std::string_view and operator<< are inline so they run in the caller’s translation unit.
If the text never leaves the module that created it, or the program is not built for Windows, use std::string.