2016. 10. 3. 11:35, Computer/Algorithm
C++에서 std 라이브러리만을 사용해 string을 나누어보자.
string을 인자로 주면 list<string>을 출력한다.
아래 코드는 '-'과 '_'를 기점으로 분리해준다.
#include <list>
#include <string>
#include <distance>
using namespace std;
list<string> str_split2(string str) {
list<string> strlist;
string::iterator tempit = str.begin();
int hd, tl;
bool goodword = true;
for (string::iterator it = str.begin(); it != str.end(); it++) {
//맨 처음 -나 _가 나오는 경우
if (it == str.begin() && (*it == '-' || *it == '_' || *it == '/' || *it == '.')) {
tempit++;
goodword = false;
}
// 중간에 -나 _가 나오는 경우
else if (*it == '-' || *it == '_' || *it == '/' || *it == '.') {
if (it != str.end() - 1) {
hd = distance(str.begin(), tempit);
tl = distance(tempit, it);
if (str.substr(hd, tl).length() > 0) {
strlist.push_back(str.substr(hd, tl));
}
tempit = it + 1;
goodword = false;
}
//마지막에 나옴
else {
hd = distance(str.begin(), tempit);
tl = distance(tempit, it);
strlist.push_back(str.substr(hd, tl));
goodword = false;
}
}
//마지막에 특수문자가 안나오는 경우에는 for문을 끝내기 전에 남은 단어를 넣어준다.
else if (it == str.end() - 1 && !goodword) {
hd = distance(str.begin(), tempit);
tl = distance(tempit, it+1);
strlist.push_back(str.substr(hd, tl));
}
}
if (goodword == true && str.length()>0) {
strlist.push_back(str);
}
return strlist;
}
'Computer > Algorithm' 카테고리의 다른 글
JSON 포맷 스트링 예쁘게 출력하는 코드(JsonPrettyPrint) (0) | 2017.08.07 |
---|---|
C++ 길이가 다른 라인 스트링 분할 Strtok 예제 (0) | 2016.11.16 |
How to convert string buffer to int(float) fast in C++(고정된 길이 문자열을 숫자로 빠르게 변환) (0) | 2016.11.15 |
How to Read Big File in C++ (대용량 파일 읽기) (2) | 2016.11.15 |
c++ std 이용하여 string을 unsigned int로 변환하기 (0) | 2016.10.30 |
Comments, Trackbacks