본문 바로가기

Language Proficiency/C++

간단한 String 변수 다루기(Trim, 중복제거 등)

String 변수를 사용하다 보면, 문자열을 이리 바꾸고 저리 바꾸고 이래저래 조작을 해야 하는 경우가 많다.


그럴때 쉽게 사용할 수 있는 몇 가지 팁을 남겨놓도록 하자.


생각날 때 마다 하나씩 계속 추가해 나가자.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
// LTrim
sRet.erase(0, sRet.find_first_not_of(' '));    // 앞
 
// RTrim
sRet.erase(sRet.find_last_not_of(' '+ 1);    // 뒤
 
// \n \r \t 를 빈칸(' ')으로 변경
std::replace_if(sRet.begin(), sRet.end(), [](char c) { return (c == '\r' || c == '\n' || c == '\t'); }, ' ');
 
// 연속된 Space를 하나로 변경
std::string::iterator new_end = std::unique(sRet.begin(), sRet.end(), [=](char lhs, char rhs) {
    return (lhs == rhs) && (lhs == ' ');
});
sRet.erase(new_end, sRet.end());