正则表达式
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");