字符串操作是比较常见的。这里搜集下自己比较经常使用的字符串操作例子。后续慢慢补充。
#include <locale.h>
#include <Shlwapi.h>
#pragma comment(lib,"Shlwapi.lib")
void CharNormalOp();
void WcharNoramlOp();
int main(int argc,char *argv[])
{
setlocale(LC_ALL,"chs");
CharNormalOp();
printf("\r\n");
WcharNoramlOp();
}
void CharNormalOp()
{
char str1[MAX_PATH] = {'\0'};
char str2[MAX_PATH] = {'\0'};
//strcpy
strcpy(str2,strcpy(str1,"abcde@fgh@tjk@lmn@123009333"));
puts(str1);
puts(str2);
//strcat
strcat(str2,strcat(str1,"##kkkmmm##"));
puts(str1);
puts(str2);
//strcmp
if(0 == strcmp(str1,str2))
{
puts("str1 equals str2");
}
//忽略大小写比较
if(0 == stricmp(str1,str2))
{
puts("str1 eaquals str2 when ignore case");
}
//字符串查找
if(strstr(str2,str1))
{
puts("str2 contains str1");
}
//字符串忽略大小写查找
if(StrStrIA(str1,"ABCD"))
{
puts("str1 contains abcd when ignore case");
}
//分割字符串
char *cur = str2;
char *p = strtok(cur,"@");
while(p)
{
printf("sub string = %s\r\n",p);
cur += (strlen(p)+strlen("@"));
p = strtok(cur,"@");
}
}
void WcharNoramlOp()
{
WCHAR str1[MAX_PATH] = {L'\0'};
WCHAR str2[MAX_PATH] = {L'\0'};
//wcscpy
wcscpy(str2,wcscpy(str1,L"我们@学习@发展@KK3@123"));
printf("str1=%S\r\n",str1);
printf("str2=%S\r\n",str2);
//strcat
wcscat(str2,wcscat(str1,L"##km环境##"));
printf("str1=%S\r\n",str1);
printf("str2=%S\r\n",str2);
//strcmp
if(0 == wcscmp(str1,str2))
{
printf("str1 equals str2\r\n");
}
//忽略大小写比较
if(0 == wcsicmp(str1,str2))
{
printf("str1 eaquals str2 when ignore case\r\n");
}
//字符串查找
if(wcsstr(str2,str1))
{
printf("str2 contains str1\r\n");
}
//字符串忽略大小写查找
if(StrStrIW(str1,L"kk3"))
{
printf("str1 contains kk3 when ignore case\r\n");
}
//分割字符串
WCHAR *cur = str2;
WCHAR *p = wcstok(cur,L"@");
while(p)
{
printf("sub wstring = %S\r\n",p);
cur += (wcslen(p)+wcslen(L"@"));
p = wcstok(cur,L"@");
}
}