• 做一个幸福的人,读书,旅行,努力工作,关心身体和心情。
  • 不管有没有人爱,也要努力做一个可爱的人。不埋怨谁,不嘲笑谁,也不羡慕谁,阳光下灿烂,风雨中奔跑,做自己的梦,走自己的路。

std::string

C/C++ lcq 7个月前 (04-01) 282次浏览 0个评论
  1. // <string>
  2. template<
  3. class CharT,
  4. class Traits = std::char_traits<CharT>,
  5. class Alloc = std::allocator<CharT>
  6. > class basic_string;

basic_string 类模板被用来存储及操作类字符(Char-like)对象(即,std::char_traits 类模板对该对象的类型提供了特例化)的序列。

  • CharT

    字符类型。

    必须是一个非数组的 C 型简单类型(POD type)

    Traits

    字符特征类。

    该类定义了被 basic_string 对象使用的字符的本质属性。

    Traits::char_type 必须等同于 CharT

    在类模板内部,使用其别名为 traits_type 的成员类型。

    Alloc

    容器内部用来管理内存分配及释放的内存分配器的类型。

    这个参数是可选的,它的默认值是 std::allocator<T>,这个是一个最简单的非值依赖的(Value-independent)内存分配器。在类模板内部,使用其别名为 allocator_type 的成员类型。

  • 在标准库外部,该模板类一般不会被直接使用,而是使用它的几个特例化(同样是由头文件 <string> 定义的):

    std::string std::basic_string<char>,普通字符串
    std::wstring std::basic_string<wchar_t>,宽字符串
    std::u16string C++11 std::basic_string<char16_t>16 位字符大小的字符串
    std::u32string C++11 std::basic_string<char32_t>32 位字符大小的字符串
  • 成员类型 定义
    traits_type 第一个模板参数 Traits
    value_type Traits::char_type
    allocator_type 第三个模板参数 Alloc
    size_type 无符号整数类型(通常为 size_t
    difference_type 有符号整数类型(通常为 ptrdiff_t
    reference Allocator::reference 已弃用
    value_type& C++11
    const_reference Allocator::const_reference 已弃用
    const value_type& C++11
    pointer Allocator::pointer 已弃用
    std::allocator_traits<Allocator>::pointer C++11
    const_pointer Allocator::const_pointer 已弃用
    std::allocator_traits<Allocator>::const_pointer C++11
    iterator 随机访问迭代器
    const_iterator 常量随机访问迭代器
    reverse_iterator std::reverse_iterator<iterator>
    const_reverse_iterator std::reverse_iterator<const_iterator>
  • (constructor) 构造对象
    (destructor) 析构对象
    operator= 赋值操作

    迭代器

    begin 返回指向字符串起始位置的迭代器(iterator
    end 返回指向字符串末尾位置的迭代器
    rbegin 返回指向字符串逆序起始位置的逆序迭代器(reverse_iterator
    rend 返回指向字符串逆序末尾位置的逆序迭代器
    cbegin C++11 返回指向字符串起始位置的常迭代器(const_iterator
    cend C++11 返回指向字符串末尾位置的常迭代器
    crbegin C++11 返回指向字符串逆序起始位置的常逆序迭代器(const_reverse_iterator
    crend C++11 返回指向字符串逆序末尾位置的常逆序迭代器

    元素数量

    size 返回有效字符个数
    length 返回有效字符个数,跟 size 返回相同的值
    max_size 返回支持的最大字符个数
    resize 改变有效字符个数
    capacity 返回当前可使用的最大字符内存块数(即存储容器)
    reserve 请求改变存储容量
    clear 清空字符串
    empty 检测字符串是否是空的
    shrink_to_fit C++11 请求移除未使用的存储空间

    元素访问

    operator[] 访问字符
    at 访问字符
    back C++11 访问最后一个字符
    front C++11 访问第一个字符

    修改器

    operator+= 附加(Append)到字符串
    append 附加到字符串
    push_back 附加字符到字符串
    assign 赋值内容到字符串
    insert 插入到字符串
    erase 从字符串中清除字符
    replace 替换字符串的部分内容
    swap 交换字符串对象
    pop_back C++11 删除最后一个字符

    字符串操作

    c_str 返回 C 型字符串
    data 返回字符串数据
    get_allocator 获得内存分配器
    copy 从字符串中拷贝字符序列
    find 从字符串查找字符或字符串,返回第一次找到的位置
    rfind 从字符串查找字符或字符串,返回最后一次找到的位置
    find_first_of 从字符串查找(由参数确定的)任意匹配的字符,返回第一次找到的位置
    find_last_of 从字符串查找(由参数确定的)任意匹配的字符,返回最后一次找到的位置
    find_first_not_of 从字符串查找(由参数确定的)任意不匹配的字符,返回第一次找到的位置
    find_last_not_of 从字符串查找(由参数确定的)任意不匹配的字符,返回最后一次找到的位置
    substr 产生子串
    compare 比较字符串
  • npos 成员类型 size_type 的最大值
  • std::operator+(std::basic_string) 连接两个字符串或一个字符串和一个字符
    operator==
    operator!=
    operator<
    operator>
    operator<=
    operator>=
    按字典序比较两个字符串
    std::swap(std::basic_string) 特例化 std::swap 函数模板
    operator<<
    operator>>
    对字符串进行流输入或输出操作
    std::getline(std::basic_string) 从流中读取一行字符
  • std::stoi C++11 将字符串转化成带符号(Signed)整数
    std::stol C++11 将字符串转化成带符号整数
    std::stoll C++11 将字符串转化成带符号整数
    std::stoul C++11 将字符串转化成无符号(Unsigned)整数
    std::stoull C++11 将字符串转化成无符号整数
    std::stof C++11 将字符串转化成浮点数
    std::stod C++11 将字符串转化成浮点数
    std::stold C++11 将字符串转化成浮点数
    std::to_string C++11 将一个整数或浮点数转化成字符串
    std::to_wstring C++11 将一个整数或浮点数转化成宽字符串
    std::hash<std::string> C++11 字符串的啥希(Hash)支持
    std::hash<std::u16string> C++11
    std::hash<std::u32string> C++11
    std::hash<std::wstring> C++11

乐趣公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明std::string
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址