• STL学习笔记(string)


    动机

    C++标准程序库中的string class使我们可以将string当做一个一般型别。我们可以像对待基本型别那样地复制、赋值和比较string,

    再也不必但系内存是否足够、占用的内存实际长度等问题。

    操作函数

    1.构造函数和析构函数

    下表列出string的所有构造函数和析构函数

    2.大小和容量

    size()和length():返回string中现有的字符个数。

    max_size():返回一个string最多能够包含的字符数,这个跟机器本身的限制有关系。

    capacity():重新分配内存之前,string所能包含的最大字符数。

    3.元素存取

    string允许我们对齐所办函字符进行读写。有两种方法可以访问单一字符:

    subscript(下标)操作符[]和成员函数at()。两者都返回某指定索引的对应位置上的字符。

    4.比较

    string支持常见的比较操作符,操作数可以是string或C-string:

    5.更改内容

    赋值:可以用operator=对字符串赋新值。新值可以是string、C-string或单一字符。

    交换:string提供了一个特殊的swap()函数用来交换两字符串内容。

    6.安插和移除字符

    string提供许多成员函数用于安插、移除、替换、擦除字符。

    我们可以使用operator+=、append()和push_back()添加字符。可以使用erase()函数来移除字符

    7.字串和字符串接合

    我们可以使用成员函数substr()从string身上提取出子字符串。例如:

    std::string s("interchangeability");
    s.substr()              //return a copy of s
    s.substr(11)            //return string("ability")
    s.substr(5,6)           //returns string("change")
    s.substr(s.find('c'))   //returns string("changeability")

    8.搜索和查找

    下表列出string的搜寻函数

    所有搜寻函数都返回符合搜寻条件之字符区间内的第一个字符的索引。如果搜寻不成狗,则返回npos。

    这些搜寻函数都采用下面的参数方案:

    第一参数总是被搜寻的对象;

    第二参数(可有可无)指出string内的搜寻起点(索引)

    第三参数(可有可无)指出搜寻的字符个数

    String对迭代器的支持

    string是字符的有序群集。所以C++标准程序库为string提供了相应接口,以便将字符串当做STL容器使用。

    string迭代器是random access(随机存取)迭代器。所以任何STL算法都可与它搭配。

    下表列出了string的迭代器操作函数

    下面是string迭代器的运用实例

     1 #include <string>
     2 #include <iostream>
     3 #include <algorithm>
     4 using namespace std;
     5 
     6 bool nocase_compare(char c1,char c2)
     7 {
     8     return toupper(c1)==toupper(c2);
     9 }
    10 
    11 int main()
    12 {
    13     string s1("This is a string");
    14     string s2("STRING");
    15     if(s1.size()==s2.size()&&equal(s1.begin(),s1.end(),s2.begin(),nocase_compare))
    16         cout<<"the strings are equal"<<endl;
    17     else
    18         cout<<"the strings are not equal"<<endl;
    19     string::iterator pos;
    20     pos=search(s1.begin(),s1.end(),s2.begin(),s2.end(),nocase_compare);
    21     if(pos==s1.end())
    22         cout<<"s2 is not a substring of s1"<<endl;
    23     else
    24         cout<<'"'<<s2<<"" is a substring of ""
    25             <<s1<<""(at index "<<pos-s1.begin()<<")"<<endl;
    26 }
    View Code
  • 相关阅读:
    python 文本相似度计算
    文本分析:停用词集
    浅谈RPC框架
    主动测试 -- 如何让执行测试的过程更流畅?
    非常好用的1款UI自动化测试工具:airTest
    Jmeter JSON断言和响应断言的区别是什么?
    monkey测试环境搭建 及 操作步骤
    如何通过优化测试流程,优化测试时间?
    POST请求成功,但接口返回数据不正确
    fiddler抓包 IOS11以上系统
  • 原文地址:https://www.cnblogs.com/runnyu/p/4857209.html
Copyright © 2020-2023  润新知