C++標准模板庫(STL)之String


1、String的常用用法

  在C語言中,使用字符數組char str[]來存字符串,字符數組操作比較麻煩,而且容易有'\0'的問題,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\n");//字符串比較,首先比較長度,長度相同的進行字典序比較。
    printf("%d %d\n",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  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM