Recent Posts
Notice
No Rules Rules
다수 delimiter를 이용한 STL string tokenizer (feat. template) 본문
728x90
반응형
STL의 string을 다루다보면 특정 구분자를 통해 파싱이 필요한 경우가 있습니다.
필요할때마다 구글링을 해보면 하나의 구분자를 통해 파싱하는 경우가 많다보니 한번에 다수의 구분자를 통해 파싱을 하는 함수를 직접 구현하여 두고두고 쓰고자 정리합니다.
반응형
template <typename T> void stringtok(T& container, const std::string& in, const char* const delimiters = " \t\n")
{
std::size_t len = in.length(), i = 0, j = 0;
while (i < len) {
if ((i = in.find_first_not_of(delimiters, i)) == std::string::npos)
break;
if ((j = in.find_first_of(delimiters, i)) == std::string::npos) {
container.push_back(in.substr(i));
break;
}
else {
container.push_back(in.substr(i, j - i));
}
// next
i = j + 1;
}
}
- container : 파싱된 문자열을 담기 위한 template. vector<string> 또는 list<string> 자료형
- in : 파싱할 전체 문자열
- delimiters : 파싱할 구분자들. 기본값은 띄워쓰기, 탭, 개행문자 로 입력
728x90
반응형
'언어 > C++' 카테고리의 다른 글
터미널로 명령을 실행하고 결과 문자열 읽기 (0) | 2023.08.29 |
---|---|
유무선 랜카드(어댑터) 정보 읽기 (0) | 2023.08.29 |
const란 (feat. c++, 오버로딩, call by value와 call by reference) (0) | 2022.07.20 |
for문 종류 (feat. c++, for each, range based for) (0) | 2022.07.20 |
for문 개념 (feat. c++, 초기식, 조건식, 증감식, 논리식) (0) | 2022.07.20 |
Comments