wow-string字符串类说明

wow-string文件说明

  • 项目地址:https://gitee.com/wow-iot/wow-iot7
  • 本文件的的功能实现类似于QString类,用于处理字符串操作,主要涉及字符串类创建、销毁、截取左边/右边/中间字段、追加字段、格式转换、获取内容、比较等功能;

字符串类创建于销毁

String_T* wow_string_new(void)
{
	String_T* string = CALLOC(1, String_T);
	CHECK_RET_VAL_ERRNO_P(string,-SYSTEM_MALLOC_FAILED,"malloc String_T false!\n");

	string->size     = 0;
	string->capicity = 0;
	string->data     = NULL;
	if(string_resize(string,DEFALUT_STRING_SZIE) < 0){
		FREE(string);
		return NULL;

	}
	return (String_T*)string;
}

void wow_string_free(String_T** pptString)
{
	CHECK_RET_VOID(pptString && *pptString);

	String_T* string = (String_T*)*pptString;
	if (string->data){
		FREE(string->data);
		string->data = NULL;
	}
	
	FREE(string);
	*pptString = NULL;
}

截取左边/右边/中间字段

int wow_string_left(String_T* ptString,size_t snLen)
{
	CHECK_RET_VAL_P(ptString ,-PARAM_INPUT_STRUCT_IS_NULL,"param input struct invalid!\n");
	CHECK_RET_VAL_P(snLen > 0 ,-PARAM_INPUT_ARG_INVALID,"param input arg invalid!\n");

	if(ptString->size > snLen){
		memset(&ptString->data[snLen],0,ptString->size - snLen);
		ptString->size = snLen;
	}
	
	return WOW_SUCCESS;
}

int wow_string_right(String_T* ptString,size_t snLen)
{
	CHECK_RET_VAL_P(ptString ,-PARAM_INPUT_STRUCT_IS_NULL,"param input struct invalid!\n");
	CHECK_RET_VAL_P(snLen > 0 ,-PARAM_INPUT_ARG_INVALID,"param input arg invalid!\n");

	if(ptString->size > snLen){
		memmove(ptString->data,&ptString->data[ptString->size - snLen],snLen);
		memset(&ptString->data[snLen],0,ptString->size - snLen);
		ptString->size = snLen;
	}
	
	return WOW_SUCCESS;
}

int wow_string_mid(String_T* ptString,size_t snIdx, size_t snLen)
{
	CHECK_RET_VAL_P(ptString ,-PARAM_INPUT_STRUCT_IS_NULL,"param input struct invalid!\n");
	CHECK_RET_VAL_P(snLen > 0 && snIdx < ptString->size ,-PARAM_INPUT_ARG_INVALID,"param input arg invalid!\n");

	if(ptString->size > (snLen +snIdx)){
		memmove(ptString->data,&ptString->data[snIdx],ptString->size - snLen);
		memset(&ptString->data[snLen],0,ptString->size - snLen);
		ptString->size = snLen;
	}else{
		memmove(ptString->data,&ptString->data[snIdx],ptString->size-snIdx);
		memset(&ptString->data[snLen],0,ptString->size-snIdx);
		ptString->size = ptString->size-snIdx;
	}
	
	return WOW_SUCCESS;
}

字符串类追加信息

int wow_string_append_data(String_T* ptString, const char* pcData) 
{
	CHECK_RET_VAL_P(ptString ,-PARAM_INPUT_STRUCT_IS_NULL,"param input struct invalid!\n");
	CHECK_RET_VAL_P(pcData,-PARAM_INPUT_DATA_IS_NULL,"param input data invalid!\n");

	int snLen = strlen(pcData);
	if(ptString->size + snLen >= ptString->capicity) {
		if(snLen > ptString->capicity){
			string_resize(ptString,ptString->capicity + snLen);
		}else{
			string_resize(ptString,ptString->capicity * 2);
		}
	}
	strncpy(&ptString->data[ptString->size],pcData,snLen);
	ptString->size += snLen;
	
	return WOW_SUCCESS;
}


int wow_string_append_string(String_T* ptString, String_T* ptAadd) 
{
	CHECK_RET_VAL_P(ptString && ptAadd,-PARAM_INPUT_STRUCT_IS_NULL,"param input struct invalid!\n");;
	
	if(ptAadd->size >= ptString->capicity - ptString->size) {
		string_resize(ptString,ptAadd->capicity + ptString->capicity);
	}

	strncpy(&ptString->data[ptString->size],ptAadd->data,ptAadd->size);
	ptString->size += ptAadd->size;
	
	return WOW_SUCCESS;
}

字符串类格式转换

int wow_string_toBool(String_T* ptString,int* pnVal)
{
	CHECK_RET_VAL_P(ptString ,-PARAM_INPUT_STRUCT_IS_NULL,"param input struct invalid!\n");

	if (!strcmp(ptString->data, "1") || !strcasecmp(ptString->data, "y") || !strcasecmp(ptString->data, "yes") || !strcasecmp(ptString->data, "true")){
		*pnVal = 1;
		return WOW_SUCCESS;

	}else if(!strcmp(ptString->data, "0") || !strcasecmp(ptString->data, "n") || !strcasecmp(ptString->data, "no") || !strcasecmp(ptString->data, "false")){
		*pnVal = 0;
		return WOW_SUCCESS;
	}else{
		return PARAM_INPUT_ARG_INVALID;
	}
}


int wow_string_toInt(String_T* ptString,int* pnVal)
{
	CHECK_RET_VAL_P(ptString ,-PARAM_INPUT_STRUCT_IS_NULL,"param input struct invalid!\n");

	*pnVal = strtol(ptString->data,NULL,10);
	return WOW_SUCCESS;
}


int wow_string_toFloat(String_T* ptString,float* pfVal)
{
	CHECK_RET_VAL_P(ptString ,-PARAM_INPUT_STRUCT_IS_NULL,"param input struct invalid!\n");

	*pfVal = (float)strtod(ptString->data,NULL);
	return WOW_SUCCESS;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值