c++ trim 去字符串空格

現在麻煩的是每次用完需要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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章