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;
}