c++ tokenizer

Nine·2022년 2월 24일
0

알고리즘

목록 보기
3/3
post-thumbnail

C++ / Tokenizer

  • 저는 C++과 JS로 코딩테스트를 준비하는 편이라 문자열 관련된 알고리즘 문제들을 종종 접하곤 합니다.

  • 하지만 C++은 다른 언어에 비해 문자열 관련된 문제에서 굉장히 불리하다고 생각합니다.

C++은 기본적으로 지원하는 문자열 관련 함수가 굉장히 약해요. 하지만 그렇다고 아예 안 할 수는 없으니 그 중에서도 가장 자주 사용되는 문자열 분리에 관해서 정리해보고자 합니다.

strtok

  • C++ 에서 strtok이라는 함수가 있습니다.

  • 특정 문자를 기준으로 문자열을 분리해주는 Tokenizer 함수입니다.

  • 개인적으로는 자주 사용하지 않아요. 😢

    • char* 형에 대해서만 작동하고 string 형은 취급하지 않기 때문입니다.
    • 물론 c_str()로 string을 char*로 형변환 할 수도 있겠지만...🤔

사용 예시

char str[] = "Hello Real World!";    // 구분할 문자열

char *ptr = strtok(str, " ");    // 첫번째 strtok 사용.

while (ptr != NULL) {
    printf("%s\n", ptr);         // 자른 문자 출력
    ptr = strtok(NULL, " ");     // 자른 문자 다음부터 구분자 또 찾기
}

stringstream

  • char* / string 관계 없이 모두 사용 가능합니다.

사용 예시

string temp = "Hello Real World!";

stringstream str(temp);

string buffer; // 임시 저장될 공간

while (getline(ss, buffer, ' ')) {
  cout << buffer << endl;
}

추천 문제

  • 위 내용을 학습하고 백준 10814번 문제 를 풀면 c++ tokenizer를 체화하는데 도움이 될 것 같아요.
profile
함께 웃어야 행복한 개발자 장호영입니다😃

0개의 댓글