1. 程式人生 > >C++字串剔除首尾不可見字元

C++字串剔除首尾不可見字元

void Trim(string &str)
{
	TrimLeft(str);
	TrimRight(str);
}

void TrimLeft(string &str)
{
	if (str.empty())
	{
		return;
	}

	string::const_iterator ch = str.begin();
	while (' ' == *ch || '\r' == *ch || '\n' == *ch || '\t' == *ch || '\f' == *ch)
	{
		str.erase(0, str.find_first_not_of(*ch));

		ch = str.begin();
	}
}

void TrimRight(string &str)
{
	if (str.empty())
	{
		return;
	}

	string::const_iterator ch = str.end() - 1;
	while (' ' == *ch || '\r' == *ch || '\n' == *ch || '\t' == *ch || '\f' == *ch)
	{
		str.erase(str.find_last_not_of(*ch) + 1);

		ch = str.end() - 1;
	}
}

void Trim(char *str)
{
	size_t size = strlen(str);
	string s = string(str, size);

	TrimLeft(s);
	TrimRight(s);

	memset(str, 0, size);
#ifdef Windows // Windows
	strcpy_s(str, size, s.c_str());
#else
	strcpy(str, s.c_str());
#endif
}

void TrimLeft(char *str)
{
	size_t size = strlen(str);
	string s = string(str, size);

	TrimLeft(s);
	memset(str, 0, size);
#ifdef Windows // Windows
	strcpy_s(str, size, s.c_str());
#else
	strcpy(str, s.c_str());
#endif
}

void TrimRight(char *str)
{
	size_t size = strlen(str);
	string s = string(str, size);

	TrimRight(s);
	memset(str, 0, size);

#ifdef Platform_Windows // Windows
	strcpy_s(str, size, s.c_str());
#else
	strcpy(str, s.c_str());
#endif
}