要想使用标准C++中string类,必须要包含
#include <string>// 注意是<string>,不是<string.h>,带.h的是C语言中的头文件
或using namespace std;
1:string对象的定义和初始化以及读写
string s1; 默认构造函数,s1为空串
string s2(s1); 将s2初始化为s1的一个副本
string s3("hello"); 将s3初始化一个字符串面值副本
string s4(n,'c'); 将s4 初始化为字符'c'的n个副本
cin>>s5; 读取有效字符直到遇到空格
getline(cin,s6); 读取字符到遇到换行,空格可读入,直到‘\n’结束
getline(cin,s7,'a'); 一直到‘a’结束,其中任何字符包括'\n'都能够读入
#include<iostream> using namespace std; //getline(cin,str);处理后还留有结束符在输入流中,故需要使用cin.get(); //接受最后一个结束符,才能接受后面得输入值。 int main() { string s1,s2("hello"),s3(10,'c'),s4,s5,s6; cin>>s4; cin.get(); getline(cin,s5); cin.get(); getline(cin,s6,'a'); cout<<s1<<endl; cout<<s2<<endl; cout<<s3<<endl; cout<<s4<<endl; cout<<s5<<endl; cout<<s6<<endl; }2:string对象操作
s.empty() 判断是否为空,bool型
s.size() 或 s.length() 返回字符的个数
s[n] 返回位置为n的字符,从0开始计数
s1+s2 连接,看下面例子:
可用此方法给字符串后面添加字符如:s=s+'a';
a: string s2=s1+", "; //对,把一个string对象和一个字符面值连接起来是允许的
b: string s4="hello "+", "; //错,不能将两个字符串面值相加
c: string s5=s1+", "+"world"; //对,前面两个相加相当于一个string对象;
d: string s6="hello" + ", " + s2; //错
(注:字符串尾部追加还可用s.append("abc")函数添加)
s1=s2 替换
s1==s2 相等,返回true或false
!=,<,<=,>,>= 字符串比较,两个字符串短的与长的前面匹配,短的小于长的
string s7("hello world!"),s8("dear"); cout<<s7<<endl<<s8<<endl; cout<<s7.empty()<<endl;//空返回1 cout<<s7.size()<<endl;//不包括'\0' cout<<s7[0]<<endl; cout<<s7<<endl; cout<<(s7==s8)<<endl; cout<<s7+s8<<endl;
k = s.find(s1); //s1为string类型,k为int类型,表示下标
s.erase(k,s1.size()); //从k处删除长度为s1.size()的元素 及删除s1
s.insert(k,s2); //在k处插入s2
string s13,s14,s15; s13 = "hello "; s14 = "world"; s15 = s13+s14; cout<<s13<<endl<<s14<<endl<<s15<<endl; int k = s15.find("world"); s15.erase(k,sizeof("world")-1); s15.insert(k,"James"); cout<<s15;