1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 07:27:45 +00:00

AK: Add operator""_{short_,}string to create a String from a literal

We briefly discussed this when adding the new String type but couldn't
settle on a name. However, having to use String::from_utf8() on every
literal string is a bit unwieldy, so let's have these options available!

Naming-wise '_string' is not as short as 'sv' but should be relatively
clear; it also matches '_bigint' and '_ubigint' in length.
'_short_string' may be longer than the actual string itself, but it's
still an improvement over the static function :^)

Since our C++ source files are UTF-8 encoded anyway, it should be
impossible to create a string literal with invalid UTF-8, so including
that in the name is not as important as in the function that can receive
arbitrary data.
This commit is contained in:
Linus Groh 2023-02-25 16:14:37 +01:00
parent 956450df00
commit 85414d9338
2 changed files with 15 additions and 0 deletions

View file

@ -259,3 +259,13 @@ struct Formatter<String> : Formatter<StringView> {
};
}
[[nodiscard]] ALWAYS_INLINE AK::ErrorOr<AK::String> operator""_string(char const* cstring, size_t length)
{
return AK::String::from_utf8(AK::StringView(cstring, length));
}
[[nodiscard]] ALWAYS_INLINE consteval AK::String operator""_short_string(char const* cstring, size_t length)
{
return AK::String::from_utf8_short_string(AK::StringView(cstring, length));
}