一二三四五 上山打老虎

两个常用库函数-strtok():用于分割字符串,c_str():string返回char指针

strtok() (C)

头文件:#include<string.h>
声明:char *strtok(char str,const chardelim);
参数:str被分割的的字符串,delim,包含分隔符的字符串
注意:str被分割后会指向分割后的第一个字符串。
用例:

#include<string.h>
#include<stdio.h>

int main (){
    
    char str[255]="abc-abc-abc-abc";
    //const char delims[]={'-'};
    //const char delims[]={'b'};
    const char delims[]={'b','-'};
    char *token=strtok(str,delims);
    while(token!=NULL){
        printf("%s\n",token);
        token=strtok(NULL,delims);//
    }
    printf("原来str指向:%s",str);
    return 0;
}

运行结果分别:

(1): const char delims[]={'-'};

abc
abc
abc
abc
原来str指向:abc

(2):const char delims[]={'b'};

a
c-a
c-a
c-a
c
原来str指向:a

(3):const char delims[]={'b','-'};

a
c
a
c
a
c
a
c
原来str指向:a

c_str (C++)

头文件:#include
声明:const charc_str();
可以用来解决printf不能输出string的问题
注意:返回值是一个const char
,如果要修改最好用strcpy(char* a,char* b.c_str())来复制后在a中处理,如果要输出直接printf即可,如果要从字符串中读入,直接sscanf(b.c_str(),"格式化符",变量)即可

用例:

#include<string>
#include<iostream>
#include<cstring>//for strcpy()
using namespace std;
int main (){
    
    string str="abcsdfsdafasdf56";
    printf("printf输出测试%s\n",str.c_str());
    int num;
    sscanf(str.c_str(),"abcsdfsdafasdf%d",&num);
    printf("字符串中读取测试:%d\n",num);
    char a[100];
    
    strcpy(a,str.c_str());
    a[0]='c';
    printf("strcpy()测试:%s",a);
    return 0;
}

输出结果

printf输出测试abcsdfsdafasdf56
字符串中读取测试:56
strcpy()测试:cbcsdfsdafasdf56
posted @ 2021-03-29 17:34  黒川川  阅读(229)  评论(0)    收藏  举报