YSTest: string.hpp 文件参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

类 | 命名空间 | 宏定义 | 类型定义 | 函数
string.hpp 文件参考
YBaseLib » YStandardExtend

ISO C++ 标准字符串扩展。 更多...

`#include "allocator.hpp"`
`#include "string_view.hpp"`
`#include "container.hpp"`
`#include "cstdio.h"`
`#include "array.hpp"`
`#include <istream>`
`#include "ios.hpp"`
`#include <ostream>`
`#include <sstream>`
`#include <cstdarg>`
string.hpp 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

## 类

class | ystdex::cpp2017::basic_string< _tChar, _tTraits, _tAlloc >
struct | ystdex::string_traits< _tString >
| 字符串特征。 更多...
struct | ystdex::details::is_string_like< _type, typename >
struct | ystdex::details::is_string_like< _type, enable_if_t< is_object< decay_t< decltype(std::declval< _type >()[0])> >::value > >
struct | ystdex::details::str_algos< size_t >
struct | ystdex::details::str_algos< 0 >
struct | ystdex::details::str_algos< 1 >
struct | ystdex::details::str_algo< typename >
struct | ystdex::details::str_algo< index_sequence<> >
struct | ystdex::details::str_algo< index_sequence< _vIdx, _vSeq... > >
struct | ystdex::is_string_like< _type >
| 判断指定类型是否为类字符串类型。 更多...
struct | ystdex::is_string_class< _type >
| 判断指定类型是否为字符串类类型。 更多...
struct | ystdex::details::stream_str_det< _tStream, _tString, typename >
struct | ystdex::details::stream_str_det< _tStream, _tString, void_t< stream_str_t< _tStream > > >
struct | ystdex::details::ston_dispatcher< _tString, _type, typename >
struct | ystdex::details::ston_dispatcher< basic_string< _tChar, _tTraits, _tAlloc >, _type, enable_if_t< not_< is_same< basic_string< _tChar, _tTraits, _tAlloc >, std::basic_string< _tChar, _tTraits, _tAlloc > > >::value > >
struct | ystdex::details::ston_dispatcher< std::string, int, void >
struct | ystdex::details::ston_dispatcher< std::string, long, void >
struct | ystdex::details::ston_dispatcher< std::string, unsigned long, void >
struct | ystdex::details::ston_dispatcher< std::string, long long, void >
struct | ystdex::details::ston_dispatcher< std::string, unsigned long long, void >
struct | ystdex::details::ston_dispatcher< std::string, float, void >
struct | ystdex::details::ston_dispatcher< std::string, double, void >
struct | ystdex::details::ston_dispatcher< std::string, long double, void >
struct | std::hash< ystdex::basic_string< _tChar, _tTraits, _tAlloc > >
| ystdex::basic_string 散列支持。 更多...

## 命名空间

| ystdex
| `<memory>` 特性测试宏。
| ystdex::cpp2017
| 取约束范围的值。
| ystdex::details
| std

## 宏定义

#define | YB_Impl_String_ston_begin(_tString, _type, _n, ...)
#define | YB_Impl_String_ston_end
#define | YB_Impl_String_ston_i(_tString, _type, _n)
#define | YB_Impl_String_ston_i_std(_type, _n) YB_Impl_String_ston_i(std::string, _type, std::_n)
#define | YB_Impl_String_ston_f(_tString, _type, _n)
#define | YB_Impl_String_ston_f_std(_type, _n) YB_Impl_String_ston_f(std::string, _type, std::_n)

## 类型定义

using | ystdex::cpp2017::string = basic_string< char >
using | ystdex::cpp2017::u16string = basic_string< char16_t >
using | ystdex::cpp2017::u32string = basic_string< char32_t >
using | ystdex::cpp2017::wstring = basic_string< wchar_t >
template<typename _tParam , typename _type = void>
using | ystdex::enable_for_string_class_t = enable_if_t< is_string_class< decay_t< _tParam > >::value, _type >
| 选择字符串类类型的特定重载避免和其它非字符串类型冲突。 更多...
template<class _tStream >
using | ystdex::stream_str_t = decltype(std::declval< _tStream & >().str())
template<typename _type >
using | ystdex::details::excluded_tostr = or_< is_same< _type, unsigned short >, is_same< _type, unsigned char > >

## 函数

template<class _tString >
basic_string_view< typename string_traits< _tString >::value_type, typename string_traits< _tString >::traits_type > | ystdex::make_string_view (const _tString &str)
| 从字符串创建 basic_string_view 对象。 更多...
template<typename _tFwd1 , typename _tFwd2 , typename _fPred >
bool | ystdex::details::ends_with_iter_dispatch (_tFwd1 b, _tFwd1 e, _tFwd2 bt, _tFwd2 et, _fPred comp, std::bidirectional_iterator_tag)
template<class _tRange >
auto | ystdex::string_begin (_tRange &c) -> decltype(c.begin())
template<class _tRange >
auto | ystdex::string_begin (const _tRange &c) -> decltype(c.begin())
template<typename _tChar >
_tChar * | ystdex::string_begin (_tChar *str)
template<typename _tElem >
auto | ystdex::string_begin (std::initializer_list< _tElem > il) -> decltype(il.begin())
template<class _tRange >
auto | ystdex::string_end (_tRange &c) -> decltype(c.end())
template<class _tRange >
auto | ystdex::string_end (const _tRange &c) -> decltype(c.end())
template<typename _tChar >
_tChar * | ystdex::string_end (_tChar *str)
template<typename _tElem >
auto | ystdex::string_end (std::initializer_list< _tElem > il) -> decltype(il.end())
template<typename _tChar >
bool | ystdex::string_empty (const _tChar *str)
| 判断字符串是否为空。 更多...
template<typename _type >
auto | ystdex::string_empty (const _type &str) -> decltype(size(str))
template<typename _tElem >
size_t | ystdex::string_empty (std::initializer_list< _tElem > il)
template<typename _tChar >
size_t | ystdex::string_length (const _tChar *str)
| 计算字符串长度。 更多...
template<typename _type >
auto | ystdex::string_length (const _type &str) -> decltype(size(str))
template<typename _tElem >
size_t | ystdex::string_length (std::initializer_list< _tElem > il)
template<typename _tRange1 , typename _tRange2 , typename _fPred >
bool | ystdex::begins_with (const _tRange1 &input, const _tRange2 &test, _fPred comp)
| 判断第一参数指定的串是否以第二参数起始。 更多...
template<typename _tRange1 , typename _tRange2 >
bool | ystdex::begins_with (const _tRange1 &input, const _tRange2 &test)
template<typename _tRange1 , typename _tRange2 , typename _fPred >
bool | ystdex::ends_with (const _tRange1 &input, const _tRange2 &test, _fPred comp)
| 判断第一参数指定的串是否以第二参数结束。 更多...
template<typename _tRange1 , typename _tRange2 >
bool | ystdex::ends_with (const _tRange1 &input, const _tRange2 &test)
template<class _tString , typename _type >
bool | ystdex::exists_substr (const _tString &str, const _type &sub)
| 判断是否存在子串。 更多...
template<class _tString , typename _type >
bool | ystdex::exists_substr (const _tString &str, const typename _tString::value_type *p_sub)
template<class _tString >
auto | ystdex::normalize (_tString &str) -> decltype(str.resize(ystdex::ntctslen(str.c_str())))
| NTCTS 正规化：保留空字符之前的字符。 更多...
template<class _tString , typename = ystdex::enable_for_string_class_t<_tString>>
_tString && | ystdex::ntctsncpy (_tString &&str, const typename string_traits< _tString >::const_pointer s, const typename string_traits< _tString >::size_type n)
| 复制不超过指定长度的 NTCTS 。 更多...
template<class _tString , typename = ystdex::enable_for_string_class_t<_tString>>
_tString && | ystdex::ntctsncpy (_tString &&str, _tString &&s, const typename string_traits< _tString >::size_type n)
template<class _tString >
_tString && | ystdex::restrict_length (_tString &&str, const typename string_traits< _tString >::size_type n)
| 限制长度不超过指定参数。 更多...
template<class _tString >
_tString | ystdex::alph (_tString &str)
| 取字母表：有序的字符串的不重复序列。 更多...
template<class _tString >
void | ystdex::concat (_tString &str, size_t n)
| 重复串接。 更多...
template<class _tString >
enable_if_t< is_class< decay_t< _tString > >::value, _tString && > | ystdex::erase_left (typename string_traits< _tString >::size_type pos, _tString &&str)
| 删除字符串中指定位置或指定字符最先出现的位置的左侧的字符串。 更多...
template<class _tString >
enable_if_t< is_class< decay_t< _tString > >::value, _tString && > | ystdex::erase_left (_tString &&str, typename string_traits< _tString >::value_type c)
template<class _tString >
enable_if_t< is_class< decay_t< _tString > >::value, _tString && > | ystdex::erase_left (_tString &&str, const remove_reference_t< _tString > &t)
template<class _tString >
enable_if_t< is_class< decay_t< _tString > >::value, _tString && > | ystdex::erase_left (_tString &&str, typename string_traits< _tString >::const_pointer t=&to_array< typename string_traits< _tString >::value_type >(" \f\n\r\t\v")[0])
template<class _tString >
enable_if_t< is_class< decay_t< _tString > >::value, _tString && > | ystdex::erase_right (typename string_traits< _tString >::size_type pos, _tString &&str)
| 删除字符串中指定位置或指定字符最后出现的位置的右侧的字符串。 更多...
template<class _tString >
enable_if_t< is_class< decay_t< _tString > >::value, _tString && > | ystdex::erase_right (_tString &&str, typename string_traits< _tString >::value_type c)
template<class _tString >
enable_if_t< is_class< decay_t< _tString > >::value, _tString && > | ystdex::erase_right (_tString &&str, const remove_reference_t< _tString > &t)
template<class _tString >
enable_if_t< is_class< decay_t< _tString > >::value, _tString && > | ystdex::erase_right (_tString &&str, typename string_traits< _tString >::const_pointer t=&to_array< typename string_traits< _tString >::value_type >(" \f\n\r\t\v")[0])
template<class _tString >
_tString && | ystdex::ltrim (_tString &&str, typename string_traits< _tString >::value_type c)
| 删除字符串中指定的连续前缀字符。 更多...
template<class _tString >
_tString && | ystdex::ltrim (_tString &&str, const _tString &t)
template<class _tString >
_tString && | ystdex::ltrim (_tString &&str, typename string_traits< _tString >::const_pointer t=&to_array< typename string_traits< _tString >::value_type >(" \f\n\r\t\v")[0])
template<class _tString >
_tString && | ystdex::rtrim (_tString &&str, typename string_traits< _tString >::value_type c)
| 删除字符串中指定的连续后缀字符。 更多...
template<class _tString >
_tString && | ystdex::rtrim (_tString &&str, const remove_reference_t< _tString > &t)
template<class _tString >
_tString && | ystdex::rtrim (_tString &&str, typename string_traits< _tString >::const_pointer t=&to_array< typename string_traits< _tString >::value_type >(" \f\n\r\t\v")[0])
template<class _tString >
_tString && | ystdex::trim (_tString &&str, typename string_traits< _tString >::value_type c)
| 删除字符串中指定的连续前缀与后缀字符。 更多...
template<class _tString >
_tString && | ystdex::trim (_tString &&str, const _tString &t)
template<class _tString >
_tString && | ystdex::trim (_tString &&str, typename string_traits< _tString >::const_pointer t=&to_array< typename string_traits< _tString >::value_type >(" \f\n\r\t\v")[0])
template<typename _tString , typename... _tParams>
_tString | ystdex::find_prefix (const _tString &str, _tParams &&... args)
| 取前缀子字符串。 更多...
template<typename _tString , typename... _tParams>
_tString | ystdex::find_suffix (const _tString &str, _tParams &&... args)
| 取后缀子字符串。 更多...
template<typename _tString >
string_traits< _tString >::value_type | ystdex::get_quote_mark_nonstrict (const _tString &str)
| 取相同的前缀和后缀元素。 更多...
template<typename _tString >
decay_t< _tString > | ystdex::quote (_tString &&str, typename string_traits< decay_t< _tString >>::value_type c=typename string_traits< decay_t< _tString >>::value_type('"'))
| 取添加前缀和后缀的字符串。 更多...
template<typename _tString , typename _tString2 >
enable_if_t<!is_convertible< _tString2, typename string_traits< decay_t< _tString > >::value_type >::value, decay_t< _tString > > | ystdex::quote (_tString &&str, const _tString2 &s)
template<typename _tString , typename _tPrefix , typename _tSuffix >
auto | ystdex::quote (_tString &&str, _tPrefix &&pfx, _tSuffix &&sfx) -> decltype(std::forward< decltype(pfx)>(pfx)+std::forward< decltype(str)>(str)+std::forward< decltype(sfx)>(sfx))
template<typename _tString >
_tString | ystdex::get_mid (const _tString &str, typename _tString::size_type l=1)
| 取删除前缀和后缀的子字符串。 更多...
template<typename _tString >
_tString | ystdex::get_mid (const _tString &str, typename _tString::size_type l, typename _tString::size_type r)
template<typename _tChar , class _tTraits , class _tAlloc , typename _func >
std::basic_istream< _tChar, _tTraits > & | ystdex::extract (std::basic_istream< _tChar, _tTraits > &is, std::basic_string< _tChar, _tTraits, _tAlloc > &str, _func f)
| 从输入流中取字符串。 更多...
template<typename _tChar , class _tTraits , class _tAlloc >
std::basic_istream< _tChar, _tTraits > & | ystdex::extract_line (std::basic_istream< _tChar, _tTraits > &is, std::basic_string< _tChar, _tTraits, _tAlloc > &str, _tChar delim)
template<typename _tChar , class _tTraits , class _tAlloc >
std::basic_istream< _tChar, _tTraits > & | ystdex::extract_line (std::basic_istream< _tChar, _tTraits > &is, std::basic_string< _tChar, _tTraits, _tAlloc > &str)
template<typename _tChar , class _tTraits , class _tAlloc >
std::basic_istream< _tChar, _tTraits > & | ystdex::extract_line_cr (std::basic_istream< _tChar, _tTraits > &is, std::basic_string< _tChar, _tTraits, _tAlloc > &str, _tChar delim_cr='\r', _tChar delim='\n')
| 同 `ystdex::extract_line` ，但允许分隔符包含附加的前缀字符。 更多...
template<typename _tChar , class _tString >
std::basic_ostream< _tChar, typename _tString::traits_type > & | ystdex::write (std::basic_ostream< _tChar, typename _tString::traits_type > &os, const _tString &str, typename _tString::size_type pos=0, typename _tString::size_type n=_tString::npos)
| 非格式输出。 更多...
template<typename _tChar , class _tTraits , size_t _vN>
std::basic_ostream< _tChar, _tTraits > & | ystdex::write (std::basic_ostream< _tChar, _tTraits > &os, const _tChar(&s)[_vN])
template<typename _tChar , class _tTraits , size_t _vN>
std::basic_ostream< _tChar, _tTraits > & | ystdex::write_literal (std::basic_ostream< _tChar, _tTraits > &os, const _tChar(&s)[_vN])
template<typename _type >
auto | ystdex::details::arithmetic_to_string (_type val, false_) -> decltype(std::to_string(val))
string | ystdex::details::arithmetic_to_string (unsigned val, true_)
template<typename _type >
auto | ystdex::details::arithmetic_to_wstring (_type val, false_) -> decltype(std::to_wstring(val))
wstring | ystdex::details::arithmetic_to_wstring (unsigned val, true_)
template<typename _type >
enable_if_t< is_arithmetic< _type >::value, string > | ystdex::to_string (_type val)
| 转换为字符串：basic_string 的实例对象。 更多...
template<typename _type >
enable_if_t< is_enum< _type >::value, string > | ystdex::to_string (_type val)
template<typename _type , class _tStream = std::ostringstream, class _tString = basic_string<typename _tStream::char_type, typename _tStream::traits_type, typename _tStream::allocator_type>>
enable_if_t< is_class< _type >::value, _t< details::stream_str_det< _tStream, _tString > > > | ystdex::to_string (const _type &x)
template<typename _type >
enable_if_t< is_arithmetic< _type >::value, wstring > | ystdex::to_wstring (_type val)
template<typename _type >
enable_if_t< is_enum< _type >::value, wstring > | ystdex::to_wstring (_type val)
template<typename _type , class _tStream = std::wostringstream, class _tString = wstring>
enable_if_t< is_class< _type >::value, _t< details::stream_str_det< _tStream, _tString > > > | ystdex::to_wstring (const _type &x)
template<typename _type , typename _tString , typename... _tParams>
_type | ystdex::ston (const _tString &str, _tParams &&... args)
| 转换表示数的字符串。 更多...
template<class _tString = string>
_tString | ystdex::vsfmt (const typename string_traits< _tString >::value_type *fmt, std::va_list args)
| 以 C 标准输出格式的输出字符串类型的对象。 更多...
template<class _tString = string>
_tString | ystdex::sfmt (const typename string_traits< _tString >::value_type *fmt,...)
| 以 C 标准输出格式的输出 basic_string 实例的对象。 更多...
template string | ystdex::sfmt< string > (const char *,...)
| 显式实例化：以 C 标准输出格式的输出 string 对象。 更多...
template<typename _type , typename _tString , typename _func >
bool | ystdex::filter_prefix (const _tString &str, const _type &prefix, _func f)
| 过滤前缀：存在前缀时处理移除前缀后的子串。 更多...
template<typename _type , typename _tString >
_tString | ystdex::cond_prefix (const _tString &str, const _type &prefix, _tString &&val={})
| 选择性过滤前缀。 更多...

## 详细描述

ISO C++ 标准字符串扩展。

版本
  r3071

作者
  FrankHB frank.nosp@m.hb19.nosp@m.89@gm.nosp@m.ail..nosp@m.com

自从
  build 304

创建时间:
  2012-04-26 20:12:19 +0800

修改时间:
  2020-06-14 12:03 +0800

文本编码:
  UTF-8

模块名称:
  YStandardEx::String

在文件 string.hpp 中定义.

## 宏定义说明

## ◆ YB_Impl_String_ston_begin

#define YB_Impl_String_ston_begin | ( |  | _tString,
|  |  | _type,
|  |  | _n,
|  |  | ...
| ) |  |

值:
template<> \
struct ston_dispatcher<_tString, _type, void> \
{ \
YB_ATTR_nodiscard static _type \
cast(const _tString& str, __VA_ARGS__) \
{ \
return _n(str

在文件 string.hpp 第 1923 行定义.

## ◆ YB_Impl_String_ston_end

#define YB_Impl_String_ston_end

值:
); \
} \
};

在文件 string.hpp 第 1931 行定义.

## ◆ YB_Impl_String_ston_f

#define YB_Impl_String_ston_f | ( |  | _tString,
|  |  | _type,
|  |  | _n
| ) |  |

值:
YB_Impl_String_ston_begin(_tString, _type, _n, size_t* idx = {}), idx \
YB_Impl_String_ston_end

在文件 string.hpp 第 1951 行定义.

## ◆ YB_Impl_String_ston_f_std

#define YB_Impl_String_ston_f_std | ( |  | _type,
|  |  | _n
| ) |  | YB_Impl_String_ston_f(std::string, _type, std::_n)

在文件 string.hpp 第 1954 行定义.

## ◆ YB_Impl_String_ston_i

#define YB_Impl_String_ston_i | ( |  | _tString,
|  |  | _type,
|  |  | _n
| ) |  |

值:
YB_Impl_String_ston_begin(_tString, _type, _n, size_t* idx = {}, \
int base = 10), idx, base \
YB_Impl_String_ston_end

在文件 string.hpp 第 1937 行定义.

## ◆ YB_Impl_String_ston_i_std

#define YB_Impl_String_ston_i_std | ( |  | _type,
|  |  | _n
| ) |  | YB_Impl_String_ston_i(std::string, _type, std::_n)

在文件 string.hpp 第 1941 行定义.

YB_Impl_String_ston_begin
#define YB_Impl_String_ston_begin(_tString, _type, _n,...)
Definition: string.hpp:1922
YSLib::IO::_tString
const string &path const String &path class class class _tString
Definition: YSLib/Service/FileSystem.h:612
YB_Impl_String_ston_end
#define YB_Impl_String_ston_end
Definition: string.hpp:1930
YSLib::Text::str
YB_ATTR_nodiscard YB_PURE const char const char * str
Definition: TextFile.h:83