zoukankan      html  css  js  c++  java
  • C++ String

    1.std::string

    string 是C++中basic_string模板的char类型的实例,在Debian 7.0中,其定义包含在

      /usr/include/c++/4.7/bits/stringfwd.h

    basic_string模板类在/usr/include/c++/4.7/bits/basic_string.h中进行了定义

    string 类中并不存储字符串,而是包含一个指向字符串的指针

    2.string初始化

      string s = "xxxx";       //C++98支持

      string s("xxxx");       //C++98支持

      string s(int n, char c);   //将s初始化为由n个字符c组成的字符串  C++98支持

      string s = {"xxxxx"};     //列表初始化,C++11新增, C++98不支持

      string s {"xxxxx"};      //列表初始化

    更多见:http://www.cplusplus.com/reference/string/string/string/

    Note:使用列表初始化化时,需在g++中指定标准类型 g++ -std=c++11      

    3.string类常见的成员函数

    容量相关函数

      string::size

        size_t size() const noexcept;  // 以字节形式返回string对象字符串的字节数, size_t ---> unsigned int 

      string::length

        size_t length() const noexcept;  //与string::size相同

      string::max_size

        size_t max_size() const noexcept; //返回string对象可以包含的最大字节数,该值因系统实现和限制而不同

      string::capacity

        size_t capacity() const noexcept;  //返回分配给string对象的大小,以字节为单位

      Note:capacity()函数的返回值并不一定等于leng()返回值,可能等于甚至大于length(),多余的空间被用来在添加新的字符时,防止重新分配内存空间,消耗时间,分配更多的空间,是为达到优化的目的

      string::reserve

        void reserve(size_t n = 0);    //预留的string对象容量大小

      Note:

        1)string对象的reverse可以将容量调整缩小,这与vector相反

        2)当请求的容量n 超过max_size()时,抛出length_err异常;当分配空间失败时,抛出bad_alloc异常

      string::resize

        void resize(size_t n);

        void resize(size_t n, char c);  //调整string的长度,而不是容量

      Note:

        1)当n < string.length()时,超过n的内容被删除

        2)当n >string.length()时,新增加的元素将以空字符填充到尾部;如果指定了填充字符c,则以字符c填充

          

      string::clear

        void clear() noexcept;      //清除string的内容

      string::empty

        bool empty() const noexcept;   //检测string对象是否为空

    相关参考:

      http://www.cnblogs.com/chinazhangjie/archive/2010/08/19/1803042.html

    迭代相关函数:

      string::begin

        iterator begin() noexcept;

        const_iterator begin() const noexcept;  //返回一个指向string对象首字符的迭代器

      string::end

        iterator end() noexcept;

        const_iterator end() const noexcept;

      Note: 返回的迭代器可用于访问或者修改其指向的string对象中的内容

      string::rbegin

        reverse_iterator rbegin() noexcept;

        const_reverse_iterator rbegin() const noexcept;

      string::rend

        reverse_iterator rend() noexcept;

        const_reverse_iterator rend() const noexcept;

      //返回倒序的迭代器

    元素访问相关函数:

      string::at

        char & at(size_t pos);

        const char & at(size_t pos) const;  //返回string对象中pos位置的字符的引用

      string::back      //c++11

        char & back();

        const char & back() const;

      string::front    //c++11

        char & front();

        const char & front() const;

    Note:  at用于访问指定位置的元素,同string[i]形式;

         back用于访问string最后一个元素;

         front用于访问string第一个元素

    字符串操作相关函数:

      string::c_str()

        const char * c_str() const noexcept;

      string::data

        const char * data() const noexcept;    //data 与c_str()相同,均返回string对象存储字符串的地址

      string::copy

        size_t copy(char * s, size_t len, size_t pos = 0) const;    //从string对象的pos开始复制长度为len的子串到s指定的空间中,返回复制到s中的字符个数

      string::find

        size_t find(const string & str, size_t pos = 0) const noexcept;

        size_t find(const char * s, size_t pos = 0) const;

        size_t find(const char * s, size_t pos, size_type n) const;

        size_t find(char c, size_t pos = 0);    //在string对象中查找substring或单个char字符的首次出现,并返回首位置,否则返回string::npos

        

        

      

  • 相关阅读:
    PowerDesigner学习 ---- 系列文章
    PowerDesigner基础使用 ---- 入门学习
    PowerDesigner ---- 数据库设计(概念模型CDM和物理模型PDM)
    PowerDesigner V16.5 安装及汉化
    在树莓派是安装并配置NTP服务
    RESTful Web API 理解
    Linux或树莓派3——挂载U盘、移动硬盘并设置rwx权限
    开启树莓派自带的VNC功能
    c#代码获取web.config配置文件里面设置的 <compilation debug="true"节点
    WebService的web客户端同步、异步、多线程向服务端传入参数的数据交互方式
  • 原文地址:https://www.cnblogs.com/tesion99/p/cppstring001.html
Copyright © 2011-2022 走看看