반응형
Python, javascript 등 다양한 언어에서는 split함수를 지원하지만 c++에는 기본으로 split함수가 내장되어 있지 않습니다. 따라서 여기에 문자열 파싱에 있어 자주 사용하는 split함수의 예제를 정리합니다.
Header
#include <sstream>
string과 stream이 합쳐진 sstream을 이용하기 위해 선언해줘야하는 헤더입니다.
Code
stringstream 객체는 str() 함수 또는 <<(ostream : 삽입연산자)를 사용해 문자열을 집어넣습니다.
추출을 위해서는 >>(istream : 추출연산자)를 사용하거나 eof를 이용, getline함수를 이용하는 방법이 있습니다.
#include <sstream>
#include <iostream>
using namespace std;
int main(){
stringstream ss;
string n;
ss.str("Hello beautiful world in the universe ! ! ");
ss << "HI " << "HO";
while(ss >> n) cout << n << endl;
}
이를 이용해 split함수를 만들어 보면 다음과 같습니다. 공백이 포함된 문자열을 첫 번째 인자로 입력 받고 두 번째 인자로는 구분자(한 문자)를 입력받습니다. vector<string>형으로 반환해줍니다.
#include <sstream>
#include <iostream>
#include <vector>
using namespace std;
vector<string> split(string input, char delimiter) {
vector<string> result;
stringstream ss(input);
string tmp;
while (getline(ss, temp, delimiter)) result.push_back(tmp);
return result;
}
int main(){
string str = "Hello beautiful world in the universe ! ! ";
vector <string> result = split(str, ' ');
for(auto &r : result) cout << r << ' ';
}
'C++' 카테고리의 다른 글
(C++) - Tuple 자료구조 (0) | 2021.05.10 |
---|---|
(C++) - cout,cin 실행 속도 높이기(시간초과 해결법) (6) | 2017.03.31 |
(C++) - KMP 알고리즘 (0) | 2017.03.12 |
(C++) - 비주얼 스투디오 코드(visual studio code) 빌드 해보기 (0) | 2017.03.05 |
(C++) - memset() : 배열 초기화 함수 사용법 (0) | 2016.12.06 |