STL泛型编程(2)——string

                        string基本字符系列容器

使用string容器,需要#include<string>

1.创建string对象

     #include<string>
#include<iostream>
using namespace std;
int main(int agrc,char* agrv[])
{
     string s;
  cout<<s.length()<<endl;
 return 0;
}

结果:0

原因:s是一个空字符串

2.给string对象赋值

1)直接给字符串对象赋值

#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char* agrv[])
{
     string s;
  s="hello C++STL";
  cout<<s<<endl;
 return 0;
}

结果:

hello C++STL

 2)将字符指针赋值给一个字符串对象

#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char* agrv[])
{
     string s;
  char ss[1000];
  scanf("%s",&ss);//scanf是c语言函数,不支持string对象
  s=ss;
  cout<<s<<endl;
 return 0;
}

 

3.从string对象尾部添加字符

#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
 string s;
 s=s+'a';
 s=s+'b';
 s=s+'c';
 cout<<s<<endl;
 return 0;
}

结果:abc

4.从string对象尾部追加元素

1)直接采用'+'

 2)采用append方法

#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
 string s1,s2;
 s1=s1+"abc";
 s1=s1+"123";
 s2.append("abc");
 s2.append("123");
 cout<<s1<<endl;
 cout<<s1<<endl;
 return 0;
}

结果:abc123

5.给string类添加对象——insert()

#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
 string s;
 s="123456";
 //迭代器的定义
 string::iterator it;
 it=s.begin();
 s.insert(it+1,'p');
 cout<<s<<endl;
 return 0;
}

结果:1p23456

6.访问string对象的元素

一般采用下标方式访问string对象的元素

#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
 string s;
 s="abc123456";
 //迭代器的定义
    cout<<s[0]<<endl;
 cout<<s[0]-'a'<<endl;
 return 0;
}

结果;

      a

      0

7.删除string对象的元素

1)清空一个字符串,直接给它赋空值即可

2)使用erase()方法删除迭代器所指的元素或者是一段区域

#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
 string s;
 s="abc123456";
 string::iterator it;
 it=s.begin();
 s.erase(it+3);
 cout<<s<<endl;
 s.erase(it,it+4);
 cout<<s<<endl;
 s="";
 cout<<s.length()<<endl;

 return 0;
}

 

abc23456

3456

0

8.返回string对象的长度

empty() 

length()

9.替换string对象的字符

replace()

#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
 string s;
 s="abc123456";
    s.replace(3,3,"good");//从第三个开始,将连续的3个字符替换为“good”
 cout<<s<<endl;
 cout<<s.length()<<endl;

 return 0;
}

 

结果:abcgood456

           10

10.搜索string对象的元素或子串

find()查找字符串中的第一个字符元素

#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
 string s;
 s="cat dog cat";
    cout<<s.find('c')<<endl;
 cout<<s.find("c")<<endl;
 cout<<s.find("cat")<<endl;
 cout<<s.find("dog")<<endl;
 cout<<s.find("dogc")<<endl;


 return 0;
}

结果:

0

0

0

4

4294967295

11.string对象的比较

compare()

12.用reverse()反向排序string对象

#include<algorithm>

 

代码:

#include<string>
#include<algorithm>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
 string s;
 s="123456789";
 reverse(s.begin(),s.end());
 cout<<s<<endl;
 return 0;
}

结果:987654321

13.string对象作为vector元素

#include<vector>
#include<string>
#include<algorithm>
#include<iostream>
using namespace std;

int main(int agrc,char* agrv[])
{
    vector<string> v;
 v.push_back("Jack");
 v.push_back("Mike");
 v.push_back("Tom");
 cout<<v[0]<<endl;
 cout<<v[1]<<endl;
 cout<<v[2]<<endl;
    cout<<v[0][0]<<endl;
 cout<<v[1][0]<<endl;
 cout<<v[2].length()<<endl;

 return 0;
}

结果:

Jack

Mike

Tom

J

M

3

14.string对象的数字化处理

在acm中取余花费时间长

#include<vector>
#include<string>
#include<algorithm>
#include<iostream>
using namespace std;

int main(int agrc,char* agrv[])
{
   string s;
   s="12345673";
   int i;
   int sum=0;
   for(i=0;i<s.length();i++)
   {
    switch (s[i])
    {
    case '0':sum+=0;  break;
    case '1':sum+=1;  break;
    case '2':sum+=2;break;
    case '3':sum+=3;break;
    case '4':sum+=4;break;
    case '5':sum+=5;break;
    case '6':sum+=6;break;
    case '7':sum+=7;break;
    case '8':sum+=8;break;
    case '9':sum+=9; break;
    }
   }
   cout<<sum<<endl;
 return 0;
}

15.string 与字符数组的相互操作

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值