字符串函数操作

正则表达式
https://www.cnblogs.com/coolcpp/p/cpp-regex.html
https://blog.csdn.net/philpanic9/article/details/88141305

string变成char数组

string ss = "122";
printf("%s %d %d\n", ss.data(), strlen(ss.data()), sizeof(ss.data()));
printf("%s %d %d\n", ss.c_str(), strlen(ss.c_str()), sizeof(ss.c_str()));
char buf[20];
int x = ss.copy(buf, ss.length());
// buf[x] = '\0';
printf("%s %d %d\n", buf, strlen(buf), sizeof(buf));


output:
122 3 4
122 3 4
122 3 20

strcpy

strcpy把含有’\0’结束符的字符串复制到另一个地址空间,返回值的类型为char*

char str1[10];
strcpy (str1, "Sample");
char str2[40];
strcpy (str2,str1);
memcpy

注意不要复制超过b大小的内容,导致非法越界。

char a[N], b[N];
scanf("%s", a);
memcpy(b, a, sizeof(char)*Num);//赋值从a地址开始的Num个char字节给b
memcpy(b, a + 1, sizeof(char)*Num);//赋值从a[1]地址开始的Num个char字节给b
memset

对数组a每个元素按照字节赋值为第二个参数

int a[N];
memset(a, 0, sizeof(int)*num);//初始化0
memset(a, 0x7f, sizeof(int)*num);//初始化一个很大的数
memset(a, 0x3f, sizeof(int)*num);//初始化一个较大的数
memset(a, 0x80, sizeof(int)*num);//初始化一个很小的数
memset(a, -1, sizeof(int)*num);//初始化为-1
strstr

在字符串中查找指定字符串第一次出现的位置。
复杂度据说不是线性的

void solve(){
  char ar[100], br[100];
  scanf("%s%s", ar, br);
  if(strstr(ar, br)) printf("%d\n", strstr(ar, br) - ar);//返回br字符串在ar中第一次出现位置的首指针;若不存在,则返回NULL
  else printf("no\n");
}
strnstr strrstr

strrstr在字符串中查找指定字符串最后一次出现的位置
strnstr在s1的前pos1个字符中查找s2

//这两个函数我g++和gcc一直CE不知道为什么
scanf("%s%s", ar, br);
if(strrstr(ar, br)==NULL)printf("**\n");

scanf("%s%s", ar, br);
if(strnstr(ar, br, strlen(ar))==NULL)printf("**\n");
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值