[C++] std::string 문자열 조작 함수

forhjy
Sep 12, 2020

--

c++쓰게 되어 숨통트여서 쓰는 글

42 과정은 피씬부터 본과정 일정 circle 까지 C언어로만 과제를 진행해야 된다. 그러다보면 문자열 파싱에서 지옥을 경험할 수 있다. 그러다가 이제 C++을 사용할 수 있게 되었는데 많은 부분 감사하고 있는 중이다. 내가 유용하게 쓴 문자열 조작 함수를 소개해보려고 한다.

특정 문자열 찾는 함수

find

std::string str = "abcdef";
str.find("c")
  • 반환값: 찾는 문자열의 위치, 만약 찾지 못했을 시 string::npos 반환한다.

find_first_of

std::string dir = "/Users/forhjy/medium/articles"
dir.find_first_of("/")
  • 반환값: 찾는 문자열이 처음 나타나는 위치

find_last_of

std::string dir = "/Users/forhjy/medium/articles"
dir.find_last_of("/")
  • 반환값: 찾는 문자열이 마지막으로 나타나는 위치

find_first_not_of / find_last_not of / at

컴파일한 결과
  • find_first_not_of 함수는 처음으로 해당 문자열이 아닌 위치를 반환한다. 예제에선 처음으로 b가 아닌 위치, 즉 a 가 나타난 위치인 7을 반환한다.
  • 그런데 find 도 어찌됐든 찾은 처음 위치를 반환하기에 같은 결과를 얻을 수 있다.
  • find_last_not_of 함수는 마지막으로 해당 문자열이 아닌 위치를 반환한다. 예제에선 마지막으로 b가 아닌 위치, 즉 a 가 마지막으로 나타나는 위치인 14를 반환한다.
  • 만약에 역으로 그 위치에 어떤 문자열이 있나 알고 싶을 땐 at 함수를 써서 확인하면 된다. at(14) 는 그래서 14번째에 어떤 문자가 있는지 알려준다.

문자열 자르는 함수

substr

컴파일한 결과
  • substr(특정위치, 자르고 싶은 문자열의 길이) 이런식으로 생각하면 된다.
  • / 가 마지막으로 나타난 위치를 first 변수에 넣었고 해당 문자열의 마지막을 찾아서 last 변수에 넣었다.
  • 하지만 a.html만 깔끔하게 출력하는 것이 목표이기에 first에 1을 더해 주었다.

--

--

forhjy
forhjy

Written by forhjy

Software Engineer Based in Seoul

No responses yet