ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 문자열 처리
    코딩테스트/코딩테스트 팁 2020. 9. 8. 15:42
    728x90

    1. 문자열 대소문자 변환(헤더 algorithm)

    - ::tolower나 ::toupper를 사용(::없으면 프로그래머스 바로 오류남)

    string word = "HELLO";
    transform(word.begin(), word.end(), word.begin(), ::tolower);
    cout << word << endl; // hello
    
    // 하나씩도 가능
    for (int i = 0; i < word.size(); i++) {
    	word[i] = ::toupper(word[i]);
    }
    cout << word << endl; // HELLLO

     

    2. 문자열 전부 순회하며 특정 문자열 찾기

    - find로 찾지 못할 경우 -1이 아닌 srd::string::npos이다

    string line = "hello my namloe is lo go ewew difk ck";
    string word = "lo";
    int pos = line.find(word);
    while (pos != std::string::npos){
    	cout << line.substr(pos, word.size()) << endl;
    	pos = line.find(word, pos + word.size());
    }

     

    3. 알파벳을 제외한 모든 특수 문자 공백으로 변환(algorithm 헤더)

    - 토큰화할때 유용하게 사용

    - replace_if

    #include <string>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    // 알파벳이 아닌 경우
    bool wordChange(char c) {
    	return c == '\'' || !isalpha(c);
    }
    
    int main() {
    	string line = "h{el@@lo \tmy \"namlo<<e is lo go e{we>>>w difk ck";
    
    	// 특수 문자들도 분리하기 위해 알파벳이 아닐시 싹다 공백으로 변환
    	replace_if(line.begin(), line.end(), wordChange, ' ');
    
    	cout << line << endl;
    	return 0;
    }
    728x90

    '코딩테스트 > 코딩테스트 팁' 카테고리의 다른 글

    우선순위큐  (0) 2020.09.06
    소수점 자리 출력  (0) 2020.08.28
    변수 타입 변환  (0) 2020.08.28
    C++ 문자열 자르기  (0) 2020.04.09
    코테하면서 헷깔리던 것들  (0) 2020.04.05

    댓글

Designed by Tistory.