string是C++风格的字符串,但本质上是一个类
函数原型
string();
//创建一个空的字符串
string(const char*s);
//使用字符串s初始化
string(const string& str);
//使用一个string对象初始化另一个string对象
string(int n,char c)
;//使用n个字符c初始化
示例
//1、默认构造 string s1; //2、使用字符串str初始化 const char* str = "hello C++"; string s2(str); //3、使用一个string对象初始化另一个string对象 string s3(s2); //4、使用5个字符a初始化,结果为"aaaaa" string s4(5, 'a');
函数原型
=
.assign(str);
//字符串赋值.assign(str,n);
//将str的前n个字符赋给当前字符串.assign(n,elem);
//用n个elem字符赋给当前字符串示例
//1、将char*类型字符串赋值给当前字符串 string str1 = "hello world"; //2、string变量赋值 string str2 = str1; //3、单个字符赋值 string str3='a'; //4、使用assign进行字符串赋值 string str4.assign("hello C++"); //5、将字符串的前5个字符赋给当前字符串,str5结果为"hello" string str5.assign("hello C++",5); //6、使用assign进行字符串赋值 strig str6.assign(str5); //7、用5个字符赋给当前字符串,str7结果为"wwwww" string str7.assign(5,'w');
函数原型
+=
//string变量拼接.append(str);
//字符串拼接.append(str,n);
//将str的前n个字符赋给当前字符串示例
//1、char*类型字符串拼接 string str1 = "hello"; str1 += "C++"; //2、string变量拼接 string str2 = "python"; str1 += str2; //3、字符串拼接 string str3 = "i"; str3.append("love"); //4、将字符串的前3个字符赋给当前字符串,str3结果为i love c++" str3.append("c++python",3); //相当于str3.append("c++python",0,3) //5、string变量拼接 str3.append(str2);
函数原型
.find(pos)
//查找方法.replace(pos,y,str)
//替换方法示例
//1、查找 string str1 = "abcdefgde"; int pos = str1.find("de"); //从左往右找,结果为3 pos = str1.rfind("de"); //从右往左找,结果为7 //2、替换 str1.replace(1,3,"1111"); //从1号位置起 3个字符替换为“1111”
注意:
函数原型
.compare(str2)
实际上是将两个字符串中的字母的ascll值逐个对比,主要用于比较是否相等
示例
string str1 = "abc"; string str2 = "bbc"; if (str1.compare(str2) == 0){ cout << "str1等于str2" << endl; } else if (str1.compare(str2) > 0){ cout << "str1大于str2" << endl; } else{ cout << "str1小于str2" << endl; }
函数原型
[n]
.at(n)
两中方式均可以获取单个字符
示例
string str = "hello"; //1、通过[]访问单个字符,结果为"h e l l o" for (int i=0; i<str.size(); i++){ cout << str[1] << " "; } //2、通过at方式访问单个字符,结果为"h e l l o" for (int i=0; i<str.size(); i++){ cout << str.at(i) << " "; } //通过[]修改单个字符,结果为xello str[0] = 'x'; //通过at修改单个字符,结果为xyllo str.at(1) = 'y';
函数原型
插入方法:
.insert(pos,str)
//在pos位置插入str字符串
.insert(pos,n,char c)
//在pos位置插入n个字符c
删除方法:
.erase(pos,npos)
//删除从pos位置到npos位置的字符串
示例
string str = "hello"; //插入,结果为"h111ello" str.insert(1,"111"); //删除,结果为"hello" str.erase(1,3);
函数原型
.substr(pos,npos)
//获取从pos位置到 npos-1位置的字符串示例
string str = "abcdef"; //截取,结果为“bcd” subStr = str.substr(1,3); //实用操作,从邮件地址中获取 用户名信息 string email = "zhangsan@foxmail.com"; int pos = email.find("@"); //获取@符号位置,结果为8 string userName = email.substr(0,pos); //获取从0到7的字符串