1.本质:将常用函数功能进行封装的字符数组。
2.优点:使用更加方便,且不容易发生错误。
1.需要引用的头文件
#include // !!!注意和 string.h 不是同一个头文件!!!
using namespace std;
2.定义
string str;
//定义并赋值
string str = "abcd";
3.访问
3.1通过下标访问(简单)
//输出一个字符
printf("%c",&str[i]);
如果要读入和输出整个字符串,要用cin cout:
#include
#include
using namespace std;
int main(){
string str;
cin >> str;
cout << str;
// 如果必须要用 printf 输出 ,则应该采用以下方法。
printf("%s",str.c_str()); //将 string 型使用 c_str() 变成字符数组。
return 0;
}
3.2通过迭代器访问
#include
#include
using namespace std;
int main(){
string str;
cin >> str;
for(string::iterator it = str.begin(); it != str.end();it++){
printf("%c",*it);
}
return 0;
}
4.常用函数
4.1 “ + = ”使用
#include
#include
using namespace std;
int main(){
string str1 = "abc",str2 = "xyz",str3;
str3 = str1 + str2;
str1 += str2;
cout << str1 << endl;
cout << str3 << endl;
return 0;
}
// 输出结果为 abcxyz
// abcxyz
4.2 比较
两个 string 可以直接使用 < = > 的运算符进行比较,比较规则是基于字典序。
if(str1 > str2) {}
if(str1 != str2) {}
if(str1 <= str2) {}
4.3length size
int len = str.length();
int size = str.size();
//结果相同
4.4insert()
两个参数使用方法:
//在 str 3 号位插入 str2.
str.insert(3,str2);
//在 str 2 号位直接插入 sxy 字符串
str.insert(2,"sxy");
三个参数使用方法:
string str1 = "abc",str2 = "xyz";
str1.insert(str1.begin(),str2.begin(),str2.end());
//在 str1 中 0 号位插入 str2 中 0号位 到 最后一个字符,区间为左开右闭。
4.5erase()
删除一个元素:
st.erase(str.begin() + 4);
// 删除 4 号位。
删除一个区间的元素:
str.erase(str.begin() + 1 , str.begin() + 3);
//删除 str 中 1、2 号位,区间左开右闭。
str.erase(1,3);
//删除从 1 号位开始的 3 个,即删除 1 2 3 号位。
4.6clear
//清除所有元素。
str.clear();
4.7substr()
string i = str.substr(4,4);
// 返回从 4 号位开始,长度为 4 的子串。
4.8find
int i = str.find(str1);
//在 str 中匹配 str1 若匹配成功,则返回第一次出现的位置,若失败,则返回-1。
int o = str.find(str1,4);
//在 str 中从 4 号位开始匹配 str , 返回值与上面相同。
4.9replace()
//把 str 从 2 号位开始,长度为 2 的子串,替换为 str2。
str.replce(2,2,str2);
//把 str 迭代器为[it1 , it 2)范围内的子串,替换为 str2。
str.replace(str.begin(),str.begin() + 2 , str2);