1#ifndef IV_SRC_CORE_STRINGS_HPP_
2#define IV_SRC_CORE_STRINGS_HPP_
15void replaceSubString(std::string &source,
const std::string &strToSearch,
const std::string &strToReplace);
23template<
typename StringType>
25 requires(std::is_convertible_v<StringType, std::string> ||
26 std::is_same_v<std::remove_pointer_t<std::decay_t<StringType>>,
char> ||
27 (std::is_same_v<std::decay_t<StringType>, std::string> &&
28 std::is_same_v<typename std::decay_t<StringType>::value_type,
char>) ||
29 (std::is_same_v<std::decay_t<StringType>, std::vector<char>>) ||
30 (std::is_same_v<std::decay_t<StringType>,
31 std::array<char, std::tuple_size_v<std::decay_t<StringType>>>>) )
33 std::transform(str.begin(), str.end(), str.begin(), [](
const unsigned char c) { return std::toupper(c); });
43template<
typename StringType>
45 requires(std::is_convertible_v<StringType, std::string> ||
46 std::is_same_v<std::remove_pointer_t<std::decay_t<StringType>>,
char> ||
47 (std::is_same_v<std::decay_t<StringType>, std::string> &&
48 std::is_same_v<typename std::decay_t<StringType>::value_type,
char>) ||
49 (std::is_same_v<std::decay_t<StringType>, std::vector<char>>) ||
50 (std::is_same_v<std::decay_t<StringType>,
51 std::array<char, std::tuple_size_v<std::decay_t<StringType>>>>) )
53 std::transform(str.begin(), str.end(), str.begin(), [](
const unsigned char c) { return std::tolower(c); });
62void trim(std::string &str);
68void ltrim(std::string &str);
74void rtrim(std::string &str);
81uint32_t
toU32bit(std::string_view str);
88uint16_t
toUint16(std::string_view str);
108std::string
fromBool(
bool value, std::string_view trueString =
"On", std::string_view falseString =
"Off");
124std::string
bytesToHex(
const T &data,
const bool reverseOption =
false)
125 requires std::ranges::sized_range<T> || std::is_array_v<T>
127 if constexpr (not std::ranges::sized_range<T> && not std::is_array_v<T>)
134 if constexpr (std::ranges::sized_range<T>)
136 length = std::size(data);
138 else if constexpr (std::is_array_v<T>)
140 length = std::extent_v<T>;
145 throw std::invalid_argument(
"Input range or array is empty.");
148 std::ostringstream oss;
150 for (
size_t i = 0; i < length; i++)
152 size_t index = reverseOption ? length - 1 - i : i;
153 const auto value =
static_cast<unsigned char>(data[index]);
154 oss << std::setw(2) << std::setfill('0') << std::hex << std::uppercase << static_cast<int32_t>(value);
166std::string
bytesToHex(
const void *data,
size_t length,
bool reverseOption =
false);
std::vector< std::string > parseAlgorithmName(const std::string_view in)
Definition strings.cpp:96
std::string utf8ToAscii(const std::string &utf8str)
Definition strings.cpp:18
std::string bytesToHex(const void *data, const size_t length, const bool reverseOption)
Definition strings.cpp:176
uint16_t toUint16(const std::string_view in)
Definition strings.cpp:81
void rtrim(std::string &str)
Trims right whites.
Definition strings.cpp:48
void replaceSubString(std::string &source, const std::string &strToSearch, const std::string &strToReplace)
Definition strings.cpp:9
uint32_t toU32bit(const std::string_view in)
Definition strings.cpp:54
void toLower(StringType &str)
Convert the given text's characters into lowercase ones.
Definition strings.hpp:44
void toUpper(StringType &str)
Convert the given text's characters into uppercase ones.
Definition strings.hpp:24
void ltrim(std::string &str)
Trims left whites.
Definition strings.cpp:43
void trim(std::string &str)
Trims left and right whites.
Definition strings.cpp:37
std::string fromBool(const bool value, const std::string_view trueString, const std::string_view falseString)
Converts a boolean value to a string representation.
Definition strings.cpp:171