본문 바로가기
Language/C++

PS에 필요한 String 컨테이너 기본 지식

by W00gie 2021. 9. 9.

 String 컨테이너는 C++ 표준 라이브러리이지만 STL에 포함시키진 않는다. 문자만을 원소로 저장하기 때문에 유사 컨테이너라 불린다. 

 코딩테스트를 포함한 여러 PS 문제에서는 문자열 조작이 다양하게 출시되기 때문에 String 컨테이너와 생성자, 멤버함수를 암기하면 편리하다.

 

# 생성자

string str;
string str("Hello");
string str("Hello",2);                     //해당 문자열에서 'He'만 기록
string str(5,'H');   
string str(str2.begin(), str2.end());     // 반복자 2개 이용

 

# 멤버함수

str.front();                   // 맨 앞 문자리턴
str.back();                    // 맨 뒤 문자리턴
str.substr(i,j);               //i부터 j까지 자른 string 부분 리턴
str.append(str);               // 타 문자열 이어붙이기
str.assign(str);               // 다른 문자열 대입
str.at(index);                 // [] 연산자와 동일
str.size();                    // 원소의 갯수 리턴
str.length();                  // 문자의 개수 리턴

 

아래 3개 함수는 유용하게 쓰이고 오버로딩 형식도 다양하기에 신경쓸 것!

str.replace(i, j, str2);              // i번째 index부터 j개의 문자를 str2 문자열로 대체
                                      // 대체되는 str2의 길이에 따라 str1의 길이가 확장됨

str.erase(i, j)                       // i 인덱스부터 j인덱스까지 지움
    erase(iteraotr)                   // 반복자가 가르키는 문자
    erase(iterator1, iterator2)       // 반복자가 가르키는 범위 모두 제거

str.compare(str2)                     // 호출객체가 더 사전상 크면 1, 작으면 -1, 같으면 0

str.find(str2)                        // str2와 동일한 문자열 찾아 시작되는 인덱스 리턴
    find(str2, i)                     // i번째 인덱스부터 str2 검색

 

#연산자

+=        // push_back(), append() 함수와 동일
[]        // 인덱스로 i번째 위치 문자리턴
=         // 대입연산자

 

 

해당 멤버 함수를 모두 암기했다면 복습으로 String과 관련된 문제를 풀어보는게 좋다.

개인적으로 추천은 프로그래머스 레벨1 문제인 '신규 아이디 추천'

https://programmers.co.kr/learn/courses/30/lessons/72410

 

코딩테스트 연습 - 신규 아이디 추천

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

programmers.co.kr