string 类头文件:
#include <string>
string 是对字符串进行的操作 可以将string 看做一个char 型的数组或者是一个vector <char>
sting 声明:
sting a; //空string
string a[10]; //字符串数组
string b("ABC“); //变量b 的值为ABC
string常用操作:(部分操作需要定义头文件<algorithm>来使用)
一、赋值类:
a.assign (b) a=b //将a清空 再将b的值付给a
a.assign("abc",1,2) a=bc //将bc赋值给a abc是要给予的值(注意加" " 否则编译器会认为abc是变量),相当于上式的b 1是指从1开始取(第一位是0 ,第二位是1 ........) 2是指取两位长度 (如果长度不够会补'\0')
a.assign (5,'c') a=ccccc //将a 清空 再给变量 a 5个c
二、长度类:
int len=a.size (); //求a的长度 返回a的长度
len = a.length() //等价a.size () 不过length只能求字符串的长度
a.resize(10); //改变a的长度,使a得长度为10 同时长度超出10的部分清空 如果长度不足10 则补0
三、数值操作类:
a.swap(b) 交换 //将a与b的值就行交换 左右两边数据类型必须相同
a.insert (1,"abc") 插入 //在a的第一位(从0开始算)前加上abc
a.insert (1,"abcde",2,3) //在a 的第一位前加上 abcde中的从第二位开始算的3位字符(cde)
a.erase (2) 删除 // 从第二位(包括第二位)开始删除 a中的字符
a.erase (2,3) //将第二位(包括第二位)后的3位删除
a.clear () 清空 //将a全部清空
a.replace(2, 4, "abcd"); //将a的第二位后4位替换成abcd 不足4位将自动补上
reverse(a.begin(),a.end()); //翻转字符串
杭电oj 2087(剪花条)
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string a, b, c;//a是总的字符 b是要匹配的字符
while (cin >> a)
{
int ans = 0;
if (a == "#") break;
cin >> b;
int len = a.size();
for (int i = 0; i <= len - b.size(); i++)//因为要匹配长度所以不用计算到a.size ()哪一位
{
c.assign(a, i, b.size());//将a中的从第i位后的b.size ()位赋给c
if (c == b)//如果字符相等
{
ans++;
i += b.size () - 1;//要跳过b中的最后哪一位 因为for 里面i要+1,所以这里-1
}
}
cout << ans<<endl;
}
return 0;
}
美好的一天从学习c结束