Java에서는 문자열을 특정 구분자를 이용하여 여러 부분으로 나누는 함수 split을 제공한다. 또한 C의 경우 strtok라는 함수를 이용하여 char배열 형태의 문자열을 구분자를 기준으로 나눌 수 있다. 그러나 strtok의 경우 string타입의 문자열은 지원하지 않는다.
C++에서는 istringstream이라는 문자열에서 작동하는 스트림 클래스가 있다. 이는 sstream이라는 C++ 표준 라이브러리를 추가해주어야 사용가능하다.
istringstream는 istream을 상속받기 때문에 getline함수를 사용할 수 있다.
- getline 함수 : istream& getline(istream& is, string& str, char delim);
getline함수를 이용하여 구분자별로 잘라서 vector에 담아 반환하는 split함수를 구현해보았다.
#include<iostream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
vector<string> split(string str, char Delimiter) {
istringstream iss(str); // istringstream에 str을 담는다.
string buffer; // 구분자를 기준으로 절삭된 문자열이 담겨지는 버퍼
vector<string> result;
// istringstream은 istream을 상속받으므로 getline을 사용할 수 있다.
while (getline(iss, buffer, Delimiter)) {
result.push_back(buffer); // 절삭된 문자열을 vector에 저장
}
return result;
}
int main() {
string str="AAA,BBB,CCC,DDD,EEE,FFF,GGG";
vector<string> result = split(str, ',');
for (int i = 0; i < result.size(); i++) {
cout << result[i] << "\n";
}
}
[C++] string타입 문자열을 split하기 | Life & Coding (lifencoding.com)
'프로그래밍 언어 > C++' 카테고리의 다른 글
[C++] char형 데이터 int형으로 변환하기 (0) | 2023.12.11 |
---|---|
[C++] 범위 (Scope) (0) | 2023.12.08 |
[C++] 배열을 함수의 매개변수로 사용 시 주의점 (0) | 2023.11.15 |
C++ 빌드 진행 과정 (0) | 2023.11.10 |
[C++] 두 배열을 비교할 수 있는 함수 equal (0) | 2023.11.06 |