c++ trim 去字符串空格

7 篇文章 0 订阅

现在麻烦的是每次用完需要free,其他方面都还行。

/*
Inputs:
src : 原始字符串
left: 去除左边的
right:去除右边的
all: 去除所有
return : dst chars
*/
char* trim_c(char* src, bool left = true, bool right = true, bool all = false)
{
#ifndef SPACE_CHAR
#define SPACE_CHAR ' '
#define END_OF_CHAR '\0'
#endif

	size_t src_len = strlen(src);
	size_t h_ind = 0;
	//Trim all,very first priority
	if (all)
	{
		char* dst = (char*) malloc(src_len+1);
		int tink = 0;
		while(h_ind < src_len)
		{
			
			if (src[h_ind] != SPACE_CHAR)
			{
				dst[tink] = src[h_ind];
				tink++;
			}
			h_ind++;
		}
		dst[tink] = END_OF_CHAR;
		return dst;
	}
	//Trim left
	if (left)
	{
		while(src[h_ind] == SPACE_CHAR)
		{
			h_ind++;
		}
	}
	//Trim right
	if (right)
	{
		while(src[src_len - 1] == SPACE_CHAR)
		{
			src_len--;
		}
	}
	
	size_t new_len = (src_len - h_ind);

	char* buffer = (char*)malloc(new_len+1);
	memset(buffer, 0, new_len+1);
	memcpy(buffer, src+h_ind, new_len);
	buffer[new_len] = END_OF_CHAR;
	
	return buffer;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值