字符串操作函数
- find()函数
int ans = s1.find(s2, 2) ; //从S1的第二个字符开始查找子串S2 int ans = s1.find(s2); //从第一个字符开始查找S2 if(ans!=string::npos) //查找失败会返回npos cout<<"找到了"<<endl;
- 字符整型互转转换
string str=to_string(int_num);//把整型变成字符串 string str="12356981"; int b = atoi(str.c_str());//字符串转整型 cout<<b<<endl;
- sort(start_add,end_add,选择升降序)排序函数
这个函数只有前两个输入的话默认升序排列,从小到大
还要注意的是如果想要降序,从小到大排列的话第三个参数要传入以下函数bool cmp1(int a,int b) //降序 { return a>b; } bool cmp2(int a,int b) //升序 { return a<b; } string str="fjdlsfwekjhfs"; sort(str.begin(),str.end(),cmp1);//降序排列,从大到小 int a[5] = {1,2,3,4,5}; //通过数组a的地址初始化,注意地址是从0到5(左闭右开区间) vector<int> vec(a, a+5); sort(vec.begin(),vec.end());//默认降序,从小到大 //其实不一定是要容器,用普通数组也可以,只要传地址 int a[5]={9,8,7,1,4}; sort(a,a+5,cmp2);//降序,从小到大
排序pair<int ,int>,今天美团笔试遇到了,太菜写不出怎么排序pair,导致没AC,第一个变量是数值,第二个变量是对应的下标。#include <iostream> #include <algorithm> #include <vector> #include <set> #include <utility> using namespace std; bool cmp(const pair<int, int>& a, const pair<int, int>& b) { if (a.first == b.first) return a.second < b.second; return a.first > b.first; } int main() { vector<pair<int, int>> vp; int n, m; cin >> n >> m; int v, w; for (int i = 1; i <= n; ++i){ cin >> v >> w; vp.push_back(make_pair(v+2*w, i)); } sort(vp.begin(), vp.end(), cmp); set<int> ans; for (int i = 0; i < m; ++i) ans.insert(vp[i].second); int flag = 0; for (int num : ans){ if (flag) cout<< " "; cout << num; flag = 1; } cout << endl; return 0; }
4.tolower()功能是把字母字符转换成小写,非字母字符不做出处理。
toupper() 小写改大写
string str="ASSDFEaxdfef" for(auto &c:str){ tolower(c); //toupper(c); }
5.substr()
第一个参数传指定的位置,第二个参数是从指定位置开始截取到后面多少位的数据
string str1("Heterological paradoxes are persistent."); string str2=str1.substr(6,7); 最后输出logical