两个常用库函数-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

浙公网安备 33010602011771号