string函数

………….

变量申请

  • string str; //定义了一个空字符串str
  • string s1(str); //调用复制构造函数生成s1,s1为str的复制品
  • string s2(str,6); //将str内,开始于位置6的部分当作s2的初值
  • string s3(str,6,3); //将str内,开始于6且长度顶多为3的部分作为s3的初值
  • string s4(cstr); //将C字符串作为s4的初值
  • string s5(cstr,3); //将C字符串前3个字符作为字符串s5的初值。
  • string s6(5,’A’); //生成一个字符串,包含5个’A’字符
  • string s7(str.begin(),str.begin()+5); //区间str.begin()和str.begin()+5内的字符作为初值
    输出结果:Hello world
       world
       wor
       abcde
       abc
       AAAAA
       Hello
    

获取特性的函数

  • int capacity()const; //返回当前容量(即string中不必增加内存即可存放的元素个数)
  • int max_size()const; //返回string对象中可存放的最大字符串的长度
  • int size()const; //返回当前字符串的大小
  • int length()const; //返回当前字符串的长度
  • bool empty()const; //当前字符串是否为空
  • void resize(int len,char c); //把字符串当前大小置为len,多去少补,多出的字符c填充不足的部分
    如:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
    string str;
    if (str.empty())
    cout<<"str is NULL."<<endl;
    else
    cout<<"str is not NULL."<<endl;
    str = str + "abcdefg";
    cout<<"str is "<<str<<endl;
    cout<<"str's size is "<<str.size()<<endl;
       cout<<"str's capacity is "<<str.capacity()<<endl;
    cout<<"str's max size is "<<str.max_size()<<endl;
    cout<<"str's length is "<<str.length()<<endl;
    str.resize(20,'c');
    cout<<"str is "<<str<<endl;
    str.resize(5);
    cout<<"str is "<<str<<endl;
    return 0;
    }
    程序执行结果为:
    /*
    str is NULL.
    str is abcdefg
    str's size is 7
    str's capacity is 15
    str's max size is 4294967294
    str's length is 7
    str is abcdefgccc
    str is abcde
    */

查找函数

  • size_type find( const basic_string &str, size_type index ); //返回str在字符串中第一次出现的位置(从index开始查找),如果没找到则返回string::npos
  • size_type find( const char *str, size_type index ); // 同上
  • size_type find( const char *str, size_type index, size_type length ); //返回str在字符串中第一次出现的位置(从index开始查找,长度为length),如果没找到就返回string::npos
  • size_type find( char ch, size_type index ); // 返回字符ch在字符串中第一次出现的位置(从index开始查找),如果没找到就返回string::npos
    注意:查找字符串a是否包含子串b,不是用 strA.find(strB) > 0 而是 strA.find(strB) != string::npos
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #include<iostream>
    #include<string>
    using namespace std;
    int main(){
    int loc;
    string s="study hard and make progress everyday! every day!!";
    loc=s.rfind("make",10);
    cout<<"the word make is at index"<<loc<<endl;//-1表示没找到
    loc=s.rfind("make");//缺省状态下,从最后一个往前找
    cout<<"the word make is at index"<<loc<<endl;
    loc=s.find_first_of("day");
    cout<<"the word day(first) is at index "<<loc<<endl;
    loc=s.find_first_not_of("study");
    cout<<"the first word not of study is at index"<<loc<<endl;
    loc=s.find_last_of("day");
    cout<<"the last word of day is at index"<<loc<<endl;
    loc=s.find("day");//缺陷状态下从第一个往后找
    cout<<loc;
    return 0;
    }
    /*
    the word make is at index-1
    the word is at index45
    the word day(first) is at index3
    the first word not of study is at index5
    the last word of day is at index47
    34
    */

其他常用函数

  • string &insert(int p,const string &s); //在p位置插入字符串s
  • string &replace(int p, int n,const char *s); //删除从p开始的n个字符,然后在p处插入串s
  • string &erase(int p, int n); //删除p开始的n个字符,返回修改后的字符串
  • string substr(int pos = 0,int n = npos) const; //返回pos开始的n个字符组成的字符串
  • void swap(string &s2); //交换当前字符串与s2的值
  • string &append(const char *s); //把字符串s连接到当前字符串结尾
  • void push_back(char c) //当前字符串尾部加一个字符c
  • const char data()const; //返回一个非null终止的c字符数组,data():与c_str()类似,用于string转const char其中它返回的数组是不以空字符终止,
  • const char c_str()const; //返回一个以null终止的c字符串,即c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同,用于string转const char
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
    string str1 = "abc123defg";
    string str2 = "swap!";
    cout<<str1<<endl;
    cout<<str1.erase(3,3)<<endl; //从索引3开始的3个字符,即删除掉了"123"
    cout<<str1.insert(0,"123")<<endl; //在头部插入
    cout<<str1.append("123")<<endl; //append()方法可以添加字符串
    str1.push_back('A'); //push_back()方法只能添加一个字符
    cout<<str1<<endl;
    cout<<str1.replace(0,3,"hello")<<endl; //即将索引0开始的3个字符替换成"hello"
    cout<<str1.substr(5,7)<<endl; //从索引5开始7个字节
    str1.swap(str2);
    cout<<str1<<endl;
    const char* p = str.c_str();
    printf("%s\n",p);
    return 0;
    }
    /*
    abc123defg
    abcdefg
    123abcdefg
    123abcdefg123
    123abcdefg123A
    helloabcdefg123A
    abcdefg
    swap!
    swap!
    */
Donate comment here