字符串构造和赋值操作
#include <string>
//string 构造函数
string();//创建一个空的字符串 例如: string str;
string(const string& str);//使用一个 string 对象初始化另一个 string 对象
string(const char* s);//使用字符串 s 初始化
string(int n, char c);//使用 n 个字符 c 初始化 v
//string 基本赋值操作
string& operator=(const char* s);//char*类型字符串 赋值给当前的字符串
string& operator=(const string &s);//把字符串 s 赋给当前的字符串
string& operator=(char c);//字符赋值给当前的字符串
string& assign(const char *s);//把字符串 s 赋给当前的字符串
string& assign(const char *s, int n);//把字符串 s 的前 n 个字符赋给当前的字符串
string& assign(const string &s);//把字符串 s 赋给当前字符串
string& assign(int n, char c);//用 n 个字符 c 赋给当前字符串
string& assign(const string &s, int start, int n);//将 s 从 start 开始 n 个字符赋值给字符串
实例
#include <iostream>
#include <string>
int main(){
string str1("hello world");
string str2(10,'B');
string str3 = str2;
cout<<str1<<endl;//hello world
cout<<str2<<endl;//BBBBBBBBBB
cout<<str3<<endl;//BBBBBBBBBB
str1="hello string";
str2=str1;
str3='W';
cout<<str1<<endl;//"hello string"
cout<<str2<<endl;//"hello string"
cout<<str3<<endl;//"W"
string str4;
str4.assign("hellow word", 5);
cout<<str4<<endl;//"hello"
string str5="hello world";
string str6;
str6.assign(str5,3,4);
cout<<str6<<endl;//"lo w"
return 0;
}
存取字符
char& operator[](int n);//通过[]方式取字符
char& at(int n);//通过 at 方法获取字符
实例
#include <iostream>
#include <string>
int main(){
string str1="hello world";
cout<<str1[2]<<endl;//'l'
str1[2]='B';
cout<<str1<<endl;//"heBlo world"
cout<<str1.size()<<endl;//11
cout<<str1.at(2)<<endl;//'B'
str1.at(2)='H';
cout<<str1.at(2)<<endl;//'H'
//[]和at的区别:[]越界不会抛出异常 at会抛出异常
try
{
//str1[100]='B';
str1.at(100)='B';
}
catch(exception &e)
{
cout<<e.what()<<endl;
}
return 0;
}
字符串拼接操作
string& operator+=(const string& str);//重载+=操作符
string& operator+=(const char* str);//重载+=操作符
string& operator+=(const char c);//重载+=操作符
string& append(const char *s);//把字符串 s 连接到当前字符串结尾
string& append(const char *s, int n);//把字符串 s 的前 n 个字符连接到当前字符串结尾
string& append(const string &s);//同 operator+=()
string& append(const string &s, int pos, int n);//把字符串 s 中从 pos 开始的 n 个字符连接到当前字符串结尾
string& append(int n, char c);//在当前字符串结尾添加 n 个字符 c
实例
#include <iostream>
#include <string>
int main(){
string str1="hello";
string str2="world";
str1 += str2;
cout<<str1<<endl;//helloworld
str2 += "xixi";
cout<<str2<<endl;//"worldxixi"
string str3="hello";
str3.append("world", 3);
cout<<str3<<endl;//"hellowor"
string str4="hello world";
string str5="hello";
str5.append(str4, 3,4);
cout<<str5<<endl;//"hellolo w"
string str6="hello";
cout<<str6+"world"<<endl;//"helloworld"
}
字符串查找和替换
int find(const string& str, int pos = 0) const; //查找 str 第一次出现位置, 从 pos 开始查找
int find(const char* s, int pos = 0) const; //查找 s 第一次出现位置,从 pos开始查找
int find(const char* s, int pos, int n) const; //从 pos 位置查找 s 的前 n 个字符第一次位置
int find(const char c, int pos = 0) const; //查找字符 c 第一次出现位置
int rfind(const string& str, int pos = npos) const;//查找 str 最后一次位置, 从 pos 开始查找
int rfind(const char* s, int pos = npos) const;//查找 s 最后一次出现位置,从pos 开始查找
int rfind(const char* s, int pos, int n) const;//从 pos 查找 s 的前 n 个字符最后一次位置
int rfind(const char c, int pos = 0) const; //查找字符 c 最后一次出现位置
string& replace(int pos, int n, const string& str); //替换从 pos 开始 n 个字符为字符串 str
string& replace(int pos, int n, const char* s); //替换从 pos 开始的 n 个字符为字符串 s
实例
#include <iostream>
#include <string>
int main(){
string str1="http://www.sex.777.sex.999.com";
string str2="sex";
cout<<str1.find(str2)<<endl;//11
cout<<str1.find("sex")<<endl;//11
cout<<str1.find("sex",12)<<endl;//19
cout<<str1.find("lsexixi", 1,3);
//需求:将铭感词sex屏蔽
while(1)
{
int ret = str1.find("sex");
if(ret == -1)
break;
str1.replace(ret,3,"***");
}
cout<<str1<<endl;//"http://www.***.777.***.999.com"
}
字符串比较
/*compare 函数在>时返回 1,<时返回 -1,==时返回 0。
比较区分大小写,比较时参考字典顺序,排越前面的越小。
大写的 A 比小写的 a 小。*/
int compare(const string &s) const;//与字符串 s 比较
int compare(const char *s) const;//与字符串 s 比较
实例
#include <iostream>
#include <string>
int main(){
string str1;
string str2;
cout<<"请输入两个字符串"<<endl;
cin>>str1;
cin>>str2;
if(str1.compare(str2)>0)
{
cout<<str1+"大于"+str2<<endl;
}
else if(str1.compare(str2)<0)
{
cout<<str1+"小于"+str2<<endl;
}
else if(str1.compare(str2) == 0)
{
cout<<str1+"等于"+str2<<endl;
}//hello小于world
}
字符串提取
string substr(int pos = 0, int n = npos) const;//返回由 pos 开始的 n 个字符组成的字符串
实例
#include <iostream>
#include <string>
int main(){
string str1="hehehe:xixixi:hahaha:lalala:wuwuwu:henhenhen:heiheihei";
//cout<<str1.substr(7,6)<<endl;//"xixixi"
int s=0;
while(1)
{
int ret = str1.find(':', s);
if(ret == -1)//未找到
{
string tmp = str1.substr(s,str1.size()-s);
cout<<tmp<<endl;
break;
}
//找到
string tmp = str1.substr(s,ret-s);
cout<<tmp<<endl;
//从找到的位置的下一个位置开始继续查找
s = ret+1;
}
//hehehe
//xixixi
//hahaha
//lalala
//wuwuwu
//henhenhen
//heiheihei
}
字符串插入和删除
string& insert(int pos, const char* s); //插入字符串
string& insert(int pos, const string& str); //插入字符串
string& insert(int pos, int n, char c);//在指定位置插入 n 个字符 c
string& erase(int pos, int n = npos);//删除从 Pos 开始的 n 个字符
实例
void test()
{
string str1="hello world";
str1.insert(4,"###");
cout<<str1<<endl;//"hell###o world"
//str1.erase(0,str1.size());
str1.erase(4,3);
cout<<str1<<endl;//"hello world"
}
C字符串转string(自动转换)
string转C字符串
实例
string str2="hello world";
const char *p = str2.c_str();
cout<<p<<endl;//"hello world"
网友评论