인프런 커뮤니티 질문&답변

유재형님의 프로필 이미지
유재형

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

split_debug 질문입니다

작성

·

138

0

안녕하세요 큰돌님 split_debug 를 보면서 궁금한 점이 생겼는데요

while ((pos = input.find(delimiter)) != string::npos) { 
  longlong pos = input.find(delimiter); 
  cout << "POS : " << pos << '\n'; 
  if (pos == string::npos)break; 
  token = input.substr(0, pos); 
  ret.push_back(token); 
  input.erase(0, pos + delimiter.length()); 
} 
  ret.push_back(input); 
  return ret;

while문의 조건으로

(pos = input.find(delimiter)) != string::npos

가 있는데 if(pos == string::npos) break 를 하는 이유가 궁금합니다.

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 재형님 ㅎㅎ

해당 부분은 문자열을 받아서 해당 delimiter 문자열을 찾아가면서 하나씩 지우는 로직입니다. 그렇기 때문에 소거를 했다면 해당 문자열을 못 찾았기 때문에 break를 걸어야 하는 로직입니다.

string::npos에 관한 부분은 교안에 있으니 참고 부탁드립니다.

감사합니다.

유재형님의 프로필 이미지
유재형

작성한 질문수

질문하기