C/C++ 字符串基础函数

1、strtok    字符串分割

原型:

char   *strtok(char s[],  const char *delim);

 

解释:

分割字符串,s为传入的字符串,delim为分割符,返回值为分割出的子串的地址。

可以通过多次调用strtok,将字符串分解为一个个子串,只需第一次调用传入母串,后续调用只需要传入NULL即可。

strtok会破坏传入字符串的完整性,所以如果后续需要使用母串的话,需要先为母串拷贝一个副本。

 

示例:

	char* p = (char*)malloc(1024);
	memcpy(p, "aaa,bbb,ccc,ddd", 1024);
	char* p1 = strtok(p, ",");
	char* p2 = strtok(NULL, ",");
	char* p3 = strtok(NULL, ",");
	char* p4 = strtok(NULL, ",");
	cout << "p1:" << p1 << endl;
	cout << "p2:" << p2 << endl;
	cout << "p3:" << p3 << endl;
	cout << "p4:" << p4 << endl;

输出:

 

 

2、strtol   字符串转数字

 原型:

long int strtol(const char *nptr,char **endptr,int base);

 

解释:

将字符串转换为数字,nptr为母串,base为转换进制,返回转换后的数字和母串中首个未被识别的字符的地址(endptr)。

通过endptr可以判断转换结果,如果endptr = 0,说明字符串不可识别,转换失败。

如果字符串中的整数值超出long int的表示范围(上溢或下溢),则strtol返回它所能表示的最大(或最小)整数,并设置errno为ERANGE,例如strtol("0XDEADbeef~~", NULL, 16)返回0x7fffffff并设置errno为ERANGE。

strtol的功能比itoa更为强大。

 

示例:

	char* srcPtr	= "0x10A,,1";
	char* endPtr    = NULL;
	int    num      = strtol(srcPtr, &endPtr, 16);
	cout << "number:" << num << endl;
	cout << "can not idetify:" << endPtr << endl;

输出:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值