来自洛谷题解https://www.luogu.org/blog/co2021/solution-p1032
1.读入空格
getline(cin,a); //可以读入空格
2.c_str()
int main() { char c[20]; string s = "12345456"; strcpy_s(c, s.c_str()); cout << c << endl; cout << c[3]; //printf("%s", s.c_str()); getchar(); getchar(); return 0; }
int main() { string s = "12345456"; const char *c = s.c_str(); cout << c << endl; cout << c[3]; //printf("%s", s.c_str()); getchar(); getchar(); return 0; }
3.插入 insert
str.insert(k,str2),在第k个位置插入字符串str2。
4.删除 erase
str.erase(k,num) 删除第k个字符开始的num个字符。
5.替换 replace
str.replace(k,num,str2); 把从第k个字符开始的2个字符替换为str2字符串。
string s = "12345456"; s.replace(0, 2, "as"); cout << s; //结果为as345456
6.find
str.find(str2) //返回字符串str中str2第一次出现的位置
str.find(str2,k) //从k开始寻找在str中str2出现的位置
rfind是倒着找,例如:下例输出为7
int main() { string s = "1200345456"; int k=s.rfind("45"); cout << k << endl; cout << s; //printf("%s", s.c_str()); getchar(); getchar(); return 0; }
find_first_of(c,k)//从前向后找
find_last_of(c,k)//从后向前找 从k开始找,找字符c,找到返回,匹配失败返回npos
find_first_not_of()
str.find_last_not_of(str2,k) 在str中搜索str2中没有的字符,并返回找到的第一个的位置。
7.substr()
substr(begin,end) //若end省略,则代表到结尾
str="sdnsaddfl amsdlk";
str.substr(0,3);//就是从下标0到3 即sdn
8.