반응형
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을 사용하는게 좋을 것 같다.
반응형
'개발 > C++' 카테고리의 다른 글
C++20 신규 기능 정리 (0) | 2023.01.25 |
---|---|
Boost Geometry 자주 사용하는 함수 정리 1편 (0) | 2022.11.02 |
std::unordered_map 정렬하기 (0) | 2022.10.06 |
[Boost Geometry] points -> polygon cluster (0) | 2022.08.10 |
std::string contains 함수를 대신하는 find 함수 (0) | 2022.04.19 |