15std::string_view
ltrim(std::string_view s, std::string_view charset =
" \n\r\t\f\v");
19std::string_view
rtrim(std::string_view s, std::string_view charset =
" \n\r\t\f\v");
23std::string_view
trim(std::string_view s, std::string_view charset =
" \n\r\t\f\v");
26constexpr bool startswith(std::string_view s, std::string_view t)
noexcept {
return s.starts_with(t); }
29constexpr bool endswith(std::string_view s, std::string_view t)
noexcept {
return s.ends_with(t); }
32std::string
replace(std::string_view str, std::string_view old, std::string_view New);
35void split(std::vector<std::string>& tokens,
const std::string& s,
const std::string& delimiters =
" ");
38std::vector<std::string>
split(
const std::string& s,
const std::string& delimiters =
" ");
41std::string
basename(std::string_view path);
44std::string
dirname(std::string_view path);
47template <
typename Target = std::
string,
typename Source = std::
string>
48Target
to(
const Source& s) {
49 std::stringstream buf;
51 if (!(buf << s) || !(buf >> result) || !(buf >> std::ws).eof())
throw std::runtime_error{
"to<>() failed"};
60bool eat_symbol(std::string_view& sv, std::string_view symbol);
63std::optional<int>
to_int(std::string_view str);
66template <std::ranges::input_range Range>
67std::string
join(
const Range& range,
const std::string& sep =
" ") {
70 for (
const auto& value : range) {
71 if (!first) str += sep;
73 if constexpr (std::is_same<std::ranges::range_value_t<Range>, std::string>::value)
76 str += std::to_string(value);
Definition: algorithm.h:10
std::string_view ltrim(std::string_view s, std::string_view charset)
Definition: string.cpp:7
void split(std::vector< std::string > &tokens, const std::string &s, const std::string &delimiters)
Split @s to tokens by @delimiters and append to @tokens.
Definition: string.cpp:27
void skip_whitespace(std::string_view &sv)
@sv skips leading whitespace characters and be the substr
Definition: string.cpp:74
std::string_view trim(std::string_view s, std::string_view charset)
Definition: string.cpp:17
std::string_view rtrim(std::string_view s, std::string_view charset)
Definition: string.cpp:12
std::string dirname(std::string_view path)
Return dirname of @path.
Definition: string.cpp:61
std::optional< int > to_int(std::string_view s)
Convert @str to int.
Definition: string.cpp:86
constexpr bool endswith(std::string_view s, std::string_view t) noexcept
Definition: string.h:29
bool eat_symbol(std::string_view &sv, std::string_view symbol)
Definition: string.cpp:80
std::string replace(std::string_view str, std::string_view s, std::string_view t)
Replace all @old in @str with @New.
Definition: string.cpp:93
std::string basename(std::string_view path)
Return basename of @path.
Definition: string.cpp:43
std::string join(const Range &range, const std::string &sep=" ")
Join all items in @range into a string, using @sep as separator.
Definition: string.h:67
constexpr bool startswith(std::string_view s, std::string_view t) noexcept
Definition: string.h:26
Target to(const Source &s)
Convert source to target.
Definition: string.h:48