字符串是常见的操作之一,熟练地运用一些常见的字符数组和字符串操作,有时能够大大提高效率。因此,简答学习了一下。其实,其本身也可以看做是容器。因此很多操作与一些STL的常见操作类似。主要通过程序实现的方式。具体可见代码。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(int argc, const char * argv[]) {
//读入
string s;
//cin >> s; ////当用cin>>进行字符串的输入的时候,遇到空格的地方就停止字符串的读取输入
//cin.get();
getline(cin,s);//以回车分开
cout << s << endl;
//赋值(略去一些append、assign)
string str1;
str1="yesterday once more";
string str2 (str1,6);// = day once more
string str3 (str1,6,3);//= day
char ch[] = {"Roly-Poly"};
string str4 = ch;
string str5 (ch);
string st6 (ch,4);//=Roly
string str7 (10,'i'); // =iiiiiiiiiii
string str8 (ch+5,ch+9); //Poly
string str9;
str9=str1+str3;
str9.insert(6,"!!!");//从第6个位置插入!!!
cout << str9 << endl;
string::iterator it;
for (it=str9.begin();it!=str9.end();++it)
cout << * it;
if (str1>str2)
cout << "Yes" << endl;
else
cout << "No" <<endl;
//sort、find、replace、erase...
sort(str9.begin(),str9.end());
string::size_type position;
position = str1.find("day");//find函数返回day在str1中第一次出现的下标位置
string str10="zy01zy02zy03zyzyzy";
position = str10.find("zy");
if (position!=str10.npos)//如果没找到,返回npos,这是一个很大的值
{
cout << position << endl;
}
position = str1.find("day",7);//从str1的下标7开始,查找字符串day
if (position!=str1.npos)//如果没找到,返回npos,这是一个很大的值
{
cout << position << endl;
}
position = 0;
while ((position=str10.find("zy",position))!= str10.npos)
{
cout << position << endl;
position++;
}
str4.swap(str5);//交换
str10.replace(6,str1.length(),str1);
cout << str10 << endl;
str7.erase();//清空
cout << str1 << endl;
str1.erase(2,4);//删除从2开始,长度为4的字符串
cout << str1 << endl;
string str11 = "hi, this is Rachel Greeen";
cout << str11 << endl;
int k = str11.find_first_of("aeiou");//find_first_of 函数最容易出错的地方是和find函数搞混。它最大的区别就是如果在一个字符串str1中查找另一个字符串str2,如果str1中含有str2中的任何字符,则就会查找成功,而find则不同
while (k!=string::npos)
{
str11[k]='*';
k=str11.find_first_of("aeiou", k+1,3);//第三个参数代表aeiou的前3个字符,即不带上o
}
cout << str11 << endl;
return 0;
}