字符串基本处理
(以下内容写给自己看的,怪菜的)
string (schuangize_type n, char c) 创建一个包含n个元素的string对象,其中每个元素初始化为字符c
常用于得到k个重复字符的字符串
c++字母大小写转换
1.通过ASCII码转化(常用)
2.单个字符 toupper(char) , tolower(char) 转化(常用)
cout<<(char)toupper('a')<<endl; cout<<(char)tolower(66)<<endl;
3.char数组类型,可以使用strupr(char *)和strlwr(char *)转化
char str[100],*p; cin>>str; p = strupr(str); cout<<p<<endl; p = strlwr(str); cout<<p<<endl;
【洛谷】P5734
1.插入函数strcat()
strcat: extern char* strcat ( char *dest, const char *src) // strcat函数将src串拼接到dest串之后
2.复制函数strcpy()
strcpy: extern char* strcpy(char *dest, const char *src) //strcpy函数将src串复制到dest串
3.查找函数strstr()
strstr: extern char* strstr(char *str1, const char *str2) //strstr函数在str1串内查找str2串的位置,如未找到,则返回NULL
在利用char数组来进行字符串之间的基本操作时,需要对数组的范围进行判断,以免造成内存溢出
该题代码:
#include <iostream> #include <cstring> #include <stdio.h> #include <cmath> #include <stdlib.h> using namespace std; const int maxn = 1e3; char s[2*maxn],in[maxn]; int main() { int n; scanf("%d%s",&n,s); while(n--){ int c; scanf("%d",&c); if(c == 1){ scanf("%s",in); strcat(s,in); printf("%s\n",s); } else if(c == 2){ int a,b; scanf("%d%d",&a,&b); s[a+b] = '\0'; strcpy(in,&s[a]); strcpy(s,in); printf("%s\n",s); } else if(c == 3){ int a; scanf("%d%s",&a,in); strcat(in,&s[a]); s[a] = '\0'; strcat(s,in); printf("%s\n",s); } else if(c == 4){ scanf("%s",in); char *ans = strstr(s,in); if(ans != NULL) printf("%d\n",int(ans-s)); else printf("%d\n",-1); } } return 0; }