注:学习本文需要有 C 语言的基础,不能代替 C++的系统性学习,适用于竞赛的快速性回顾与过知识点。
1.STL
在 C 语言中我们需要手搓各种轮子,写很多接口,以便我们来解决一些问题,实在不方便。
但在 C++中,它强大的库已经帮我们实现了非常多好用的,实用的接口,非常称手。
2.string
C 语言中处理字符串很多要用到char 类型的指针,虽然也有一些函数可以用,但实际在算法题中,还是较为累赘。
而在 C++中,我们有直接的内置类型string,让字符串变得更像数字,更加方便
创建一个 string,需要有对应的头文件
#include <string>
using namespace std;
int main()
{
string s1;
string s2 = "abced";//初始化直接赋值
string s3("ok");//括号初始化方法
return 0;
}
a.string 的“数字”特性
string 的字符串是像数组一样有下表的,依旧是从 0 开始,不再以\0 作为结束标志
string 里的字符串是可以像数字一样进行直接赋值的
string s1 = "happy";
s1 = "unhappy"
string 创建的字符串,可以直接进行+=或者-=,例如 我们想让Apple 拼接在 watermelon 的后面
string s1 = "watermelon";
string s2 = "apple";
s1 += s2;
b.string 的各种接口
在 string 创建的字符串后尾插一个字符,用.操作符来调用尾插 push_back 接口
string s1 = "i love "
s1.push_back(u);
尾删接口.pop_back(),注意括号里没有参数
string s1 = "i love u";
s1.pop_back();
测长度接口.size(),可以直接做到测量字符串的长度
string s1 = "aaa"
int l = s1.size();//l 里有字符串s1 的长度 3
查找子串的起始位置.find(),第一个参数为string 字符串的名字或者 C 风格的字符串,第二个为从下标多少开始
string s1 = "apple";
string s2 = "le";
size_t n = s1.find(s2,0);
字符串插入函数.insert(),将一个字符串插入到string 字符串第n个字符之前
int main()
{
string s2("l");
string s1 = "i love u";
s2 += s1;
s1.insert(0,s2);
//插入 string 类型的字符串
cout << s1 <<endl;
cout << s2 <<endl;
s1.insert(0,"l");
//插入 C 语言风格const char *的字符串
cout << s1 << endl;
s1.insert(0,2,'t');
//插入 n 个字符
cout << s1 <<endl;
return 0;
}
c.string 字符串的特殊特性
string字符串的比较,可以直接比较,不用 C 语言的 strcmp 函数来比较,直接用大于小于来比较
比较的是对应字符的 ASIC 码值
int main()
{
string s1 = "abcdx";
string s2 = "xxx";
if(s2 > s1)
cout << ">" << endl;
else
cout << "<=" << endl;
return 0;
}
字符串可以用 C++的特殊循环,范围 for
string s1 = "i love u";
for(auto t : s1)
{
cout << t << " ";
}
以上就是C++中 string 在竞赛里的常见用法,希望能帮助大家更好的回顾 string 的接口与特性
4914



被折叠的 条评论
为什么被折叠?



