[C++] string 클래스 space 제거 (ltrim, rtrim, trim)

https://github.com/MoongStory/StringTool
// 앞에 있는 화이트 스페이스 문자 제거
std::string& MOONG::StringTool::trim_left(std::string& input)
{
	if(input.length() == 0)
	{
		return input;
	}

	size_t index = 0;

	for(size_t i = 0; i < input.length(); i++)
	{
		if(input.at(i) != ' ' && input.at(i) != '\t' && input.at(i) != '\n' && input.at(i) != '\r\n')
		{
			index = i;

			break;
		}
	}

	input.erase(0, index);

	return input;
}
// 뒤에 있는 화이트 스페이스 문자 제거
std::string& MOONG::StringTool::trim_right(std::string& input)
{
	if(input.length() == 0)
	{
		return input;
	}

	size_t index = 0;

	for(size_t i = input.length() - 1; i >= 0; i--)
	{
		if(input.at(i) != ' ' && input.at(i) != '\t' && input.at(i) != '\n' && input.at(i) != '\r\n')
		{
			index = i + 1;

			break;
		}
	}

	input.erase(index);

	return input;
}
// 양쪽 끝의 화이트 스페이스 문자 제거
std::string& MOONG::StringTool::trim(std::string& input)
{
	return trim_left(trim_right(input));
}

// trim from start (copying)
std::string MOONG::StringTool::trim_left_keep_origin(std::string input)
{
	return MOONG::StringTool::trim_left(input);
}
// trim from end (copying)
std::string MOONG::StringTool::trim_right_keep_origin(std::string input)
{
	return MOONG::StringTool::trim_right(input);
}
// trim from both ends (copying)
std::string MOONG::StringTool::trim_keep_origin(std::string input)
{
	return MOONG::StringTool::trim(input);
}

댓글

이 블로그의 인기 게시물

[NSIS] 32비트와 64비트 모듈 등록하는 법. (regsvr32)

[Visual Studio] Windows 7 에서 Visual Studio 6.0 디버그 시 프로세스 좀비되는 증상 해결 방법