mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 12:47:35 +00:00
Documentation: Add operator"" sv pattern to Patterns.md
This commit is contained in:
parent
ad33efbc8c
commit
f71f1d66d6
1 changed files with 32 additions and 0 deletions
|
@ -80,3 +80,35 @@ struct Empty { };
|
||||||
|
|
||||||
static_assert(AssertSize<Empty, 1>());
|
static_assert(AssertSize<Empty, 1>());
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## String View Literals
|
||||||
|
|
||||||
|
`AK::StringView` support for `operator"" sv` which is a special string literal operator that was added as of
|
||||||
|
[C++17 to enable `std::string_view` literals](https://en.cppreference.com/w/cpp/string/basic_string_view/operator%22%22sv).
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
[[nodiscard]] ALWAYS_INLINE constexpr AK::StringView operator"" sv(const char* cstring, size_t length)
|
||||||
|
{
|
||||||
|
return AK::StringView(cstring, length);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
This allows `AK::StringView` to be constructed from string literals with no runtime
|
||||||
|
cost to find the string length, and the data the `AK::StringView` points to will
|
||||||
|
reside in the data section of the binary.
|
||||||
|
|
||||||
|
Example Usage:
|
||||||
|
```cpp
|
||||||
|
#include <AK/String.h>
|
||||||
|
#include <AK/StringView.h>
|
||||||
|
#include <LibTest/TestCase.h>
|
||||||
|
|
||||||
|
TEST_CASE(string_view_literal_operator)
|
||||||
|
{
|
||||||
|
StringView literal_view = "foo"sv;
|
||||||
|
String test_string = "foo";
|
||||||
|
|
||||||
|
EXPECT_EQ(literal_view.length(), test_string.length());
|
||||||
|
EXPECT_EQ(literal_view, test_string);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue