chsun0303   5년 전

주로 python3로 문제 풀다가 최근 들어서 c++로 풀고있는데 문자열 관련처리가 익숙하지 않습니다...

c++에서 문자열을 공백단위로 split할 때 주로 어떤 방법을 쓰나요?

제가 써보거나 찾아본 방법은 아래 3개인데, 뭘 주로쓰는지 궁금합니다.

  1. string 배열 선언후, 배열로 입력받고 처리 
  2. split함수 직접 구현 (공백 단위로 문자 잘라서 vector에 넣음)
  3. std::istream_iterator<std::string>(iss) 사용

skynet   5년 전

입력 받아야하는 문자열에 공백이 없으면 괜찮은데

공백이 있으면 난감하죵.

저 같은 경우에

getline(), ignore()

함수 사용해서 입력 받구.

파싱 해야될 경우에는 3. 을 많이 이용합니다.

직접 구현할경우에는 띄어쓰기가 여러번 들어온다든지 텝키가 들어온다든지 '_', '-' 이런 경우의 수들을 모두 고려하기가 힘들거든요

구글에 C++ 문자열 파싱 이라고 검색해 보시면 정보 많이 얻으실수 있습니다.

skynet   5년 전

근데 개시글에 마크다운 어케 적용해요?

chsun0303   5년 전

@skynet 글 쓰는 부분 하단에 코드 올릴 수 있는 부분이 따로있습니다. 

주로 3번을 많이 쓰는군요. 

다른 분들이 제출한 코드를 여러개 보긴 했는데, 주로 쓰는 방법이 뭔지 눈에 딱 보이지 않아서 질문드렸습니다ㅠㅠ.. 감사합니다!

skynet   5년 전

ㅋㅋㅋ 저는 3번 쓰는데 다른 사람은 잘 모르겠어요.

3번이 편하긴 해요 근데

portableangel   5년 전

stringstream을 이용해서 문자열을 공백 기준으로 쪼개 받을 수도 있습니다.

Green55   5년 전

https://en.cppreference.com/w/...

저는 strtok 쓰는데 이것도 상당히 편한거 같습니다.

char []로 스트링을 받아야 한다는 단점이 있지만, 어짜피 파싱 한 다음 파싱 결과만 스트링으로 바꾸면 큰 문제 없어서..

chsun0303   5년 전

@portableangel 오 제일 맘에 드는 방법이네요. 감사합니다.

chsun0303   5년 전

@ssangba55 strtok는 첨 봤는데 이것도 맘에 드네요 ㅎㅎ 감사합니다.

댓글을 작성하려면 로그인해야 합니다.