libpqxx
The C++ client library for PostgreSQL
|
Marker-type wrapper: zero-terminated std::string_view
.
More...
Public Member Functions | |
constexpr | zview (char const text[], std::ptrdiff_t len) noexcept(noexcept(std::string_view{text, static_cast< std::size_t >(len)})) |
Convenience overload: construct using pointer and signed length. | |
constexpr | zview (char text[], std::ptrdiff_t len) noexcept(noexcept(std::string_view{text, static_cast< std::size_t >(len)})) |
Convenience overload: construct using pointer and signed length. | |
constexpr | zview (std::string_view other) noexcept |
Explicitly promote a string_view to a zview . | |
template<typename... Args> | |
constexpr | zview (Args &&...args) |
Construct from any initialiser you might use for std::string_view . | |
zview (std::string const &str) noexcept | |
constexpr | zview (char const str[]) noexcept(noexcept(std::string_view{str})) |
Construct a zview from a C-style string. | |
template<size_t size> | |
constexpr | zview (char const (&literal)[size]) |
Construct a zview from a string literal. | |
constexpr char const * | c_str () const &noexcept |
Either a null pointer, or a zero-terminated text buffer. | |
Marker-type wrapper: zero-terminated std::string_view
.
When you construct a zview, you are promising that if the data pointer is non-null, the underlying string is zero-terminated. It otherwise behaves exactly like a std::string_view.
The terminating zero is not "in" the string, so it does not count as part of the view's length.
The added guarantee lets the view be used as a C-style string, which often matters since libpqxx builds on top of a C library. For this reason, zview also adds a c_str method.
|
inlineexplicitconstexpr |
Construct from any initialiser you might use for std::string_view
.
|
inlinenoexcept |
std::string
.
|
inlineconstexprnoexcept |
Construct a zview
from a C-style string.
zview
once and re-use it.
|
inlineconstexpr |
Construct a zview
from a string literal.
A C++ string literal ("foo") normally looks a lot like a pointer to char const, but that's not really true. It's actually an array of char, which devolves to a pointer when you pass it.
For the purpose of creating a zview
there is one big difference: if we know the array's size, we don't need to scan through the string in order to find out its length.