直接上代码:
#include<cstdio>
#include<iostream> //cin cout 在 iostream头文件中 而不是stdio.h
#include<string>
using namespace std;
int main(){
string str = "abcdefg";
for(int i=0;i<str.length();i++){
printf("%c",str[i]);
}
printf("\n");
//读入和输出整个字符串 只能用cin和cout
string str1;
cin>>str1;
cout<<str1;
printf("\n");
//printf来输出 string 需要使用c_str() 将string类型转化为字符数组进行输出
string str2 = "hello world";
printf("%s",str2.c_str());
printf("\n");
for(string::iterator it = str2.begin();it!=str2.end();it++){
printf("%c",*it);
}
string::iterator it = str2.begin(); //只有vector和string可以有这种写法 即迭代器可以直接加
for(int i=0;i<str2.length();i++){
printf("%c",*(it+i));
}
printf("\n");
//string的拼接
string str3 = str + " " +str2; //直接相加 空格也可以直接在里面加
//或者
str+=str2;
cout<<str3<<endl; //endl表示回车
cout<<str<<endl;
//两个string类型的可以直接使用 == 、!=、<、<=、>、>=进行比较 按照字典序
//str.length() == str.size()
//表示把str2插入在str的3号位开始
str = "abcdefg";
str.insert(3,str2);
cout<<str<<endl;
//或者
str = "abcdefg";
str.insert(str.begin()+3,str2.begin(),str2.end());
cout<<str<<endl;
//erase() 的两种删除方法与前面一致 (删除单个元素 删除一个区间的元素)
//还有一种用法 str.erase(pos,length) pos为要删除的起始位置 length为要删除的长度
str.erase(3,2); //即删除he
cout<<str<<endl;
//clear() 清空 用法一致
//返回子串 substr(pos,len)
string str4 = "Thank you for your smile.";
cout<<str4.substr(0,5)<<endl;
cout<<str4.substr(14,4)<<endl;
cout<<str4.substr(19,5)<<endl;
//string::npos用于作为find函数失配时的返回值
printf("%d\n",string::npos); //本身的值为 -1 (可以认为是unsigned_int类型的最大值)
//find() 查找到子串第一次出现的下标
string str5 = "you";
string str6 = "me" ;
if(str4.find(str5)!=string::npos){
cout<<str4.find(str5)<<endl;
}else{
cout<<"sorry"<<endl;
}
if(str4.find(str5,7)!=string::npos){ //表示从str5的7号位开始向后查找
cout<<str4.find(str5,7)<<endl; //这时匹配到的其实是 your
}else{
cout<<"sorry"<<endl;
}
if(str4.find(str6)!=string::npos){
cout<<str4.find(str6)<<endl;
}else{
cout<<"sorry"<<endl;
}
//replace() 替换
//str.replace(pos,len,str2) 表示从pos位开始 len长度的字符串 全部换成str2
//str.replace(it1,it2,str2) 表示把str的迭代器 [it1,it2) 的子串换成str2
cout<<str4.replace(6,3,str6)<<endl; //空格不占长度
cout<<str4.replace(str4.begin(),str4.begin()+5,str6)<<endl;
return 0;
}
运行结果: