C++标准模板库(STL)之String

1、String的常用用法

  在C语言中,使用字符数组char str[]来存字符串,字符数组操作比较麻烦,而且容易有''的问题,C++在STL中加入string类型,对字符串常用的需求功能进行封装。

  使用string,必须要加头文件#include<string>和using namespace std;

注意:#include<string>和#include<string.h>的区别,#inlcude<string.h>是包含了字符串常用的函数,比如strcat,strcmp。#include<string.h>和#include<cstring>等价。

  1.1、string的定义

  定义string的方式和基本类型定义相同。

string str;
string str="abcd";

  1.2、string中的内容访问

  和vector一样,有两种方式:下标访问,迭代器访问

    1.2.1、下标访问

    可以如同字符数组一样去访问string

    1.2.2、迭代器访问

    string的迭代器不需要参数,直接定义string::iterator it;

#include<stdio.h>
#include<string>

using namespace std;

int main()
{
    string str="abcd";
    for(int i=0;i<str.length;i++)
    {
        printf("%c ",str[i]);//a b c d
    }
    
    //通过迭代器访问string内容
    for(string::iterator it=str.begin();it!=str.end();it++)
    {
        pritnf("%c ",*it);
    }

    return 0;
View Code

  1.3、string常用函数

    1.3.1、+,+=,字符串拼接
    1.3.2、==,!=,<,<=,>=,>比较大小
    1.3.3、length()/size(),字符串长度
    1.3.4、insert()
    1.3.5、erase()
    1.3.6、clear()
    1.3.7、substr()
 
    1.3.8、replace()
#include<stdio.h>
#include<string>

using namespace std;

int main()
{
    string str="abcd";
    for(int i=0;i<str.length;i++)
    {
        printf("%c ",str[i]);//a b c d
    }
    
    //通过迭代器访问string内容
    for(string::iterator it=str.begin();it!=str.end();it++)
    {
        pritnf("%c ",*it);
    }
    string str1="xyz";
    string str2=str+str1;
    cout<<str2<<endl;//abcdxyz
    if(str<str1)printf("OK
");//字符串比较,首先比较长度,长度相同的进行字典序比较。
    printf("%d %d
",str.lenght(),str.size());//4,4//获取字符串的长度,大小
    cout<<str.insert(3,str1)<<endl;//往str[3]处插入xyz,输出abcxyzd;
    str.insert(str.begin()+3,str.begin(),str.end);
        str.substr(0,3);//substr(pos,len),从0开始,长度为3的子串
    return 0;
}
View Code
    1.3.9、string::npos

    string::npos是一个常数,本身值为-1,用来做find函数失配的返回值。

    1.3.10、find()   
#include<stdio.h>
#include<string>

using namespace std;

int main()
{
    string str="abcd";
    string str1="bc";
    if(str.find(str1)!=string::npos)
    {
        cout<<str.find(str1)<<endl;
    }
    if(str.find(str2,2)!=string::npos)
    {
        cout<<str.find(str2,2)<<endl;
    }
    else
    {
        cout<<"No Find"<<endl;
    }
    return 0;
}
View Code

2018-09-25 16:15:15

@author:Foreordination  

原文地址:https://www.cnblogs.com/drq1/p/9699470.html