字符串基本处理

(以下内容写给自己看的,怪菜的)

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;
}

 

posted @ 2020-10-05 18:29  我不秃  阅读(171)  评论(0编辑  收藏  举报