一、string对象的定义,初始化及读写
string s1;
string s2(s1);
string s1('wuyang');
string s1(n,'w');
cin>>s1;
getline(cin,s1);
getline(cin,s1,'w');
二、string对象的操作
s1.empty();
reverse(s1.begin(),s1.end());
s1.size();
s1.length();
s1[n];
s1.append("abc");
s1+s2;
s1=s2;
s1==s2;
str2.size()返回的值并不是int类型
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1;
string str2("the size of ");
string str3=" hello world ";
str3+=str2;
str3.append("haha secessful");
cout<<str3<<endl;
cout<<"the size of is "<<str2.size()<<endl;
getline(cin,str1);
while(!str1.empty())
{
for(string::size_type i=0; i!=str1.size(); ++i)
{
cout<<str1[i];
}
cout<<endl;
break;
}
return 0;
}
三、string对象中字符的处理(头文件#include”cctype”)
isalnum(c);
isdigit(c);
isalpha(c);
islower(c);
isupper(c);
tolower(c);
toupper(c);
isgraph(c);
isprint(c);
iscntrl(c);
isdigit(c);
ispunct(c);
isxdigit(c);
isspace(c);
#include<iostream>
#include<string>
#include<cctype>
using namespace std;
int main()
{
string str1="Hello World!!!";
string::size_type punct_cnt = 0;
for(string::size_type i=0;i!=str1.size();++i)
{
if(ispunct(str1[i]))
++punct_cnt;
str1[i]=toupper(str1[i]);
}
cout<<"字符中标点符号有:"<<punct_cnt<<endl;
cout<<str1<<endl;
return 0;
}
四、string与数值的相互转换(可以直接当做模板)
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
string convert_to_string(double x)
{
ostringstream o;
if(o<<x)
return o.str();
return "conversion error";
}
double convert_from_string(const string &s)
{
istringstream i(s);
double x;
if(i >> x)
return x;
return 0.0;
}
int main(int argc,char *argv[])
{
char b[10];
string a;
sprintf(b,"%d",1975);
a=b;
cout<<a<<endl;
string cc=convert_to_string(1976);
cout<<cc<<endl;
string dd="115165";
int p=convert_from_string(dd)+2;
cout<<p<<endl;
return 0;
}
五、字符的插入,删除,查找
插入
string s1;
string::iterator it;
it=s1.begin();
s1.insert(it+1,'p');
删除
string s1;
string::iterator it;
it=s1.begin();
s1.erase(it+3);
s1.erase(it,it+4);
替换
string s1;
s1.replace(pos,num,char*c);
替换操作的样例
int main()
{
string s1="abc123456";
s1.replace(3,3,"good");
cout<<s1<<endl;
return 0;
}
查找
string s1;
s1.find('c');
s1.find("c");
s1.find("good");
s1.find('c',pos);
s1.find("c",pos);
s1.find("good",pos,num);
s1.rfind('c',pos);
s1.rfind("c",pos);
s1.rfind("good",pos,num);
#include <iostream>
#include <cstring>
#include <string.h>
#include <map>
using namespace std;
int main()
{
string c;
int i;
map <string,int> m;
while(getline(cin,c,'\n')&&c.size()!=0)
{
for(i=c.size();i>0;i--)
m[c.substr(0,i)]++;
}
string s;
while(cin>>s)
{
cout<<m[s]<<endl;
}
return 0;
}
注明原文链接