개발/C++

std::string tokenizing 방법

njsung 2022. 4. 19. 15:49
반응형

c++ std::string은 python의 split과 같은 tokenize 함수를 별도 제공하지 않는다.

 

따라서 여러가지 방법으로 string을 tokenizing할 수 있으며, 두 가지 방법을 소개하려고한다.

 

stringstream

std::vector<std::string> split(std::string input, char delimiter)
{
	std::vector<std::string> answer;
	std::stringstream ss(input);
	std::string temp;

	while (getline(ss, temp, delimiter)) {
		answer.push_back(temp);
	}

	return answer;
};

std::string line("test\test2\test3");
std::vector<std::string> tokens = split(line, '\t');

- stringstream과 getline함수를 활용 / delimiter마다 return되는 string을 vector 컨테이너에 담아 반환

 

boost::split

std::string line("test\test2\test3");
std::vector<std::string> tokens;
boost::split(tokens, line, boost::is_any_of("\t"));

 

구현해서 사용할꺼면 1번의 방식을, boost 라이브러리를 사용하고있다면 boost::split을 사용하는게 좋을 것 같다.

반응형