字符串处理操作

首先,包含头文件string 

#include string
1.定义和构造初始化 

声明字符串变量

string s;
2.字符串操作函数

1、添加字符+

s+=str;//加个字符串 
s+=”my name is jiayp”;//加个C字符串 

s+=’a’;//加个字符 

2、插入字符

在string中间的某个位置插入字符串,可以用insert()函数,指定一个安插位置的索引,被插入的字符串将放在这个索引的后面。 
s.insert(0,”my name”); 
s.insert(1,str); 

插入必须写成字符串形式。

3、删除

s.erase(13);//从索引13开始往后全删除 

s.erase(7,5);//从索引7开始往后删5个 

4、比较字符串 == != <= >= compare()

字符串比较按照字典顺序,字典排序靠前的字符小,比较的顺序是从前向后比较,遇到不相等的字符就按这个位置上的两个字符的比较结果确定两个字符串的大小。 

另一个功能强大的比较函数是成员函数compare(),0-相等 >0-大于 <0-小于。举例如下: 
string s(“abcd”); 
s.compare(“abcd”); //返回0 
s.compare(“dcba”); //返回一个小于0的值 
s.compare(“ab”); //返回大于0的值 
s.compare(s); //相等 
s.compare(0,2,s,2,2); //用”ab”和”cd”进行比较小于零 

s.compare(1,2,”bcx”,2); //用”bc”和”bc”比较。 

5、字符串大小size()、length()

6、取某个字符[]、at()

可以使用下标操作符[]和函数at()对元素包含的字符进行访问。
   string str1 = "Iphone 5";
   cout<<str1[2]<<endl; // = h
   cout<<str1.at(4)<<endl; // = n

    string stuff;
    getline(cin,stuff); // 输入一行字符赋值给stuff
    getline(cin,stuff,'!'); // 输入一行字符以“!”结束
    cout<<stuff<<endl;

7、子字符串substr()

substr(),形式如下: 
s.substr();//返回s的全部内容 
s.substr(11);//从索引11往后的子串 

s.substr(5,6);//从索引5开始6个字符 

8、查找函数

find() 
rfind() 
这些函数返回符合搜索条件的字符区间内的第一个字符的索引,没找到目标就返回npos。所有的函数的参数说明如下: 
第一个参数是被搜寻的对象。第二个参数(可有可无)指出string内的搜寻起点索引,第三个参数(可有可无)指出搜寻的字符个数。
# include <iostream>
# include <string>

using namespace std;
int main()
{
    string str = "when i was young, i listen to radio.";

    position  = str.find("listen");

    if (position != str.npos) //npos是个很大的数,如果没找到就会返回npos的值给position
    {
        cout<<"第一次出现的下标是:"<<position<<endl;
    }

    //从字符串下标9开始,查找字符串you,返回you 在str中的下标
    position = str.find("you",9);
    cout<<"str.find("you",9")is:"<<position<<endl;

    //查找子串出现的所有位置
    string substr = "i";
    position = 0;
    int i = 1;
    while((position = str.find_first_of(substr,position)) != string::npos)
    {
        cout<<"position "<<i++<<position<<endl;
        position++;
    }

    //反向查找子串在str中最后出现的位置
    string flag = "to";
    position = str.rfind(flag);
    cout<<"str.rfind(flag):"<<position<<endl;
    getchar();
    return 0;
}

9、迭代器begin()、end()

# include <iostream>
# include <string>
# include <algorithm>
using namespace std;
int main()
{
    string str;

    str.push_back('Q');
    str.push_back('A');

    sort(str.begin(),str.end());
    string::iterator itstr = str.begin();

    for ( ; itstr != str.end(); itstr++)
    {
        cout<<*itstr;
    }   

    //str.pop_back();

    getchar();
    return 0;   //输出AQ
}

  • 10、分割字符串
  • #include <stdio.h>
    #include <string>
    #include <iostream>
    using namespace std;
    void test1(){//strtok
        char s[] = "Golden Global   View,disk * desk";
        const char *d = " ,*";
        char *p;
        p = strtok(s,d);
        while(p)
        {
            printf("%s\n",p);
            p=strtok(NULL,d);
        }
    
    }
    void test2(){//find和substr
        string s="Golden Global View disk desk";
        int position=0,position1=0;
        string tmp;
        if(s[s.size()-1]!=' ')s+=" ";
        while(s!=""){
            position=s.find(" ");
            tmp=s.substr(0,position);
            cout<<tmp<<endl;
            s=s.substr(position+1,s.size()-position);
        }
        
    }
    int main()
    {
        test1();
        cout<<endl;
        test2();
        return 0;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值