17#if UDON_PLATFORM_OUTPUT_STREAM == UDON_PLATFORM_OUTPUT_CONSOLE
28 template <
typename CharType,
typename Traits = std::
char_traits<CharType>>
31 static_assert(not std::is_array<CharType>::value,
"CharType cannot be an array.");
33 static_assert(std::is_trivial<CharType>::value,
"CharType must be a trivial type.");
35 static_assert(std::is_standard_layout<CharType>::value,
"CharType must be a standard layout type.");
41 using int_type =
typename traits_type::int_type;
42 using off_type =
typename traits_type::off_type;
43 using pos_type =
typename traits_type::pos_type;
69 , m_size(strlen(string))
86 template <typename InputIterator, typename = typename std::enable_if<std::is_convertible<typename std::iterator_traits<InputIterator>::iterator_category, std::input_iterator_tag>::value>::type>
97 : m_data(string.
data())
98 , m_size(string.
size())
108 template <typename T = CharType, typename = typename std::enable_if<std::is_same<T, char>::value>::type>
110 : m_data(str.c_str())
111 , m_size(str.length())
123 constexpr explicit operator bool() const noexcept
147 constexpr bool empty() const noexcept
157 return m_data[index];
168 return m_data[index];
182 return m_data[m_size - 1];
205 std::min(n, m_size - pos)
256 return m_size >=
string.m_size and traits_type::compare(m_data,
string.m_data,
string.m_size) == 0;
264 return m_size >=
string.m_size and traits_type::compare(m_data + m_size -
string.m_size,
string.m_data,
string.m_size) == 0;
272 std::vector<BasicStringView> tokens;
277 const auto next = std::next(it);
278 if (*it == delimiter)
280 tokens.emplace_back(
begin, it);
283 else if (next ==
cend())
295 template <
typename T =
int>
298 static_assert(std::is_arithmetic<T>::value,
"T must be arithmetic type.");
315 std::swap(m_data, other.m_data);
316 std::swap(m_size, other.m_size);
325 return lhs.m_size == rhs.m_size and traits_type::compare(lhs.m_data, rhs.m_data, lhs.m_size) == 0;
334 return not(lhs == rhs);
337#if UDON_PLATFORM_OUTPUT_STREAM == UDON_PLATFORM_OUTPUT_CONSOLE
342 return os.write(
string.m_data,
string.m_size);
353 Serial.print(m_data[i]);
363 Serial.write(m_data, m_size);
396 constexpr StringView operator""_sv(
const char*
string,
size_t length)
noexcept
398 return { string, length };
402 constexpr WStringView operator""_sv(
const wchar_t*
string,
size_t length)
noexcept
404 return { string, length };
文字列参照クラス
Definition StringView.hpp:30
constexpr const_pointer data() const noexcept
ビューへのポインタを取得する
Definition StringView.hpp:130
constexpr BasicStringView()
デフォルトコンストラクタ
Definition StringView.hpp:58
Udon::Optional< T > toNumber(const int radix=10) const
ビューを数値に変換する
Definition StringView.hpp:296
constexpr const_reference operator[](const size_type index) const noexcept
指定されたインデックスの文字を取得する
Definition StringView.hpp:155
Traits traits_type
Definition StringView.hpp:39
std::reverse_iterator< const_iterator > const_receive_iterator
Definition StringView.hpp:48
constexpr size_type size() const noexcept
ビューのサイズを取得する
Definition StringView.hpp:137
const_iterator cbegin() const noexcept
Definition StringView.hpp:371
const char_type * const_pointer
Definition StringView.hpp:46
friend bool operator!=(const BasicStringView &lhs, const BasicStringView &rhs) noexcept
ビューが不一致であるか比較する
Definition StringView.hpp:332
void swap(BasicStringView &other) noexcept
ビューを入れ替える
Definition StringView.hpp:313
BasicStringView substrUntil(const char_type terminate) const
指定された終端文字までのビューを作成する
Definition StringView.hpp:213
const_receive_iterator crbegin() const noexcept
Definition StringView.hpp:377
BasicStringView substr(const size_type pos, const size_type n=npos) const
指定された範囲のビューを作成する
Definition StringView.hpp:189
constexpr BasicStringView(InputIterator begin, InputIterator end)
要素を指すイテレータをもとにビューを構築
Definition StringView.hpp:87
const_receive_iterator rend() const noexcept
Definition StringView.hpp:375
typename traits_type::char_type char_type
Definition StringView.hpp:40
typename traits_type::state_type state_type
Definition StringView.hpp:44
size_t size_type
Definition StringView.hpp:38
const char_type * const_iterator
Definition StringView.hpp:47
static constexpr size_type npos
Definition StringView.hpp:50
typename traits_type::int_type int_type
Definition StringView.hpp:41
friend bool operator==(const BasicStringView &lhs, const BasicStringView &rhs) noexcept
ビューが一致するか比較する
Definition StringView.hpp:323
const_receive_iterator crend() const noexcept
Definition StringView.hpp:378
typename traits_type::off_type off_type
Definition StringView.hpp:42
BasicStringView removeSuffix(const size_type n) const
末尾のN文字を削除したビューを作成する
Definition StringView.hpp:239
BasicStringView & operator=(const BasicStringView &)=default
デフォルト代入演算子
BasicStringView(const BasicStringView &)=default
デフォルトコピーコンストラクタ
const_iterator cend() const noexcept
Definition StringView.hpp:372
std::basic_string< char_type > toString() const
STL の文字列に変換する
Definition StringView.hpp:306
BasicStringView removePrefix(const size_type n) const
先頭のN文字を削除したビューを作成する
Definition StringView.hpp:224
std::vector< BasicStringView > split(const char_type delimiter) const
指定された区切り文字で区切り、ビューのリストを作成する
Definition StringView.hpp:270
bool endsWith(const BasicStringView &string) const noexcept
ビューが指定したビューで終わっているか判定する
Definition StringView.hpp:262
bool startsWith(const BasicStringView &string) const noexcept
ビューが指定したビューから始まっているか判定する
Definition StringView.hpp:254
const_iterator end() const noexcept
Definition StringView.hpp:369
const char_type & const_reference
Definition StringView.hpp:45
constexpr const_reference back() const noexcept
ビューの終端の文字を取得する
Definition StringView.hpp:180
BasicStringView(const_pointer string)
文字列の先頭を指すポインタをもとにビューを構築
Definition StringView.hpp:67
const_receive_iterator rbegin() const noexcept
Definition StringView.hpp:374
const_reference at(const size_type index) const noexcept
指定されたインデックスの文字を取得する
Definition StringView.hpp:161
const_iterator begin() const noexcept
Definition StringView.hpp:368
BasicStringView(const std::basic_string< CharType > &string)
std::string からの変換
Definition StringView.hpp:96
friend std::basic_ostream< char_type > & operator<<(std::basic_ostream< char_type > &os, const BasicStringView &string)
std::ostream への出力
Definition StringView.hpp:340
constexpr const_reference front() const noexcept
ビューの先頭文字を取得する
Definition StringView.hpp:173
constexpr BasicStringView(const_pointer string, const size_type length)
文字列の先頭を指すポインタ、サイズをもとにビューを構築
Definition StringView.hpp:76
constexpr bool empty() const noexcept
ビュー終端にヌル終端文字を含むことは保証されないので c_str() は提供しない
Definition StringView.hpp:147
typename traits_type::pos_type pos_type
Definition StringView.hpp:43
オプショナル型
Definition Optional.hpp:62
Udon::Optional< T > Parse(const char *const begin, const char *const end, const int radix)
文字列を数値に変換する
Definition StringToNumberParser.hpp:28
Definition Typedef.hpp:94