YSTest: string.hpp 文件参考

YSTest PreAlpha_b700_20160611 The YSLib Test Project

- 首页
- 相关页面
- 模块
- 命名空间
- 类
- 文件

- 文件列表
- 文件成员

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

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

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

浏览源代码.

## 类

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::ston_dispatcher< _tString, _type >
struct | ystdex::details::ston_dispatcher< std::string, int >
struct | ystdex::details::ston_dispatcher< std::string, long >
struct | ystdex::details::ston_dispatcher< std::string, unsigned long >
struct | ystdex::details::ston_dispatcher< std::string, long long >
struct | ystdex::details::ston_dispatcher< std::string, unsigned long long >
struct | ystdex::details::ston_dispatcher< std::string, float >
struct | ystdex::details::ston_dispatcher< std::string, double >
struct | ystdex::details::ston_dispatcher< std::string, long double >

## 命名空间

| ystdex
| <functional> 特性测试宏。
| ystdex::details

## 宏定义

#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)

## 类型定义

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<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_end (_tRange &c) -> decltype(c.end())
template<class _tRange >
auto | ystdex::string_end (const _tRange &c) -> decltype(c.end())
template<typename _type >
size_t | ystdex::string_length (const _type *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<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<typename _type , typename _tString , typename... _tParams>
_type | ystdex::ston (const _tString &str, _tParams &&...args)
| 转换表示数的字符串。 更多...
template std::string | ystdex::sfmt< char > (const char *,...)
| 显式实例化：以 C 标准输出格式的输出 std::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={})
| 选择性过滤前缀。 更多...
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<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 _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 >
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 >
_tString | ystdex::quote (const _tString &str, typename string_traits< _tString >::value_type c=typename string_traits< _tString >::value_type('"'))
| 取添加前缀和后缀的字符串。 更多...
template<typename _tString , typename _tString2 >
enable_if_t<!is_convertible< _tString2, typename string_traits< _tString >::value_type >::value,_tString > | ystdex::quote (const _tString &str, const _tString2 &s)
template<typename _tString , typename _tPrefix , typename _tSuffix >
_tString | ystdex::quote (const _tString &str, const _tPrefix &pfx, const _tSuffix &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])
std::string | ystdex::to_string (unsigned char val)
| 转换为字符串： std::basic_string 的实例对象。 更多...
std::string | ystdex::to_string (unsigned short val)
template<typename _type >
enable_if_t< is_enum< _type >::value, std::string > | ystdex::to_string (_type val)
template<typename _type , class _tStream = std::ostringstream>
enable_if_t< is_class< _type >::value, decltype(std::declval< _tStream & >).str())> | ystdex::to_string (const _type &x)
std::wstring | ystdex::to_wstring (unsigned char val)
std::wstring | ystdex::to_wstring (unsigned short val)
template<typename _type >
enable_if_t< is_enum< _type >::value, std::wstring > | ystdex::to_wstring (_type val)
template<typename _type , class _tStream = std::wostringstream>
enable_if_t< is_class< _type >::value, decltype(std::declval< _tStream & >).str())> | ystdex::to_wstring (const _type &x)
template<typename _tChar , class _tString = std::basic_string<_tChar>>
_tString | ystdex::vsfmt (const _tChar *fmt, std::va_list args)
| 以 C 标准输出格式的输出 std::basic_string 实例的对象。 更多...
template<typename _tChar >
auto | ystdex::sfmt (const _tChar *fmt,...) -> decltype(vsfmt(fmt, std::declval< std::va_list >()))
| 以 C 标准输出格式的输出 std::basic_string 实例的对象。 更多...

## 详细描述

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

版本
  r1906

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

自从
  build 304

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

修改时间:
  2016-06-03 09:11 +0800

文本编码:
  UTF-8

模块名称:
  YStandardEx::String

在文件 string.hpp 中定义.

## 宏定义说明

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

值:
template<> \
struct ston_dispatcher<_tString, _type> \
{ \
static _type \
cast(const _tString& str, __VA_ARGS__) \
{ \
return _n(str
YSLib::Text::str
const char const char * str
Definition: TextFile.h:77

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

#define YB_Impl_String_ston_end

值:
); \
} \
};

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

#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
YB_Impl_String_ston_end
#define YB_Impl_String_ston_end
Definition: string.hpp:1046
YB_Impl_String_ston_begin
#define YB_Impl_String_ston_begin(_tString, _type, _n,...)
Definition: string.hpp:1038

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

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

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

#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
YB_Impl_String_ston_end
#define YB_Impl_String_ston_end
Definition: string.hpp:1046
YB_Impl_String_ston_begin
#define YB_Impl_String_ston_begin(_tString, _type, _n,...)
Definition: string.hpp:1038
YSLib::IO::int
YF_API int
Definition: File.h:49

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

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

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