작성
·
323
0
http://boj.kr/1209b05bb2834533b556253dab193f9d
교안에 있는 스플릿함수에서 string::npos의 기능은 무엇이고 언제 !=string::npos가 실행되는지 궁금합니다.
pos선언시 pos의 값은 숫자에 불과할텐데 int가 아닌 long long을 사용하신 이유가 궁금합니다!
답변 1
2
안녕하세요 kkim님 ㅎㅎ
교안에 있는 스플릿함수에서 string::npos의 기능은 무엇이고 언제 !=string::npos가 실행되는지 궁금합니다.
>>
string의 find 메서드는 특정 문자열을 찾아 위치를 반환하는데요. 이 메서드는 만약 해당 문자열을 못 찾을 경우 string::npos를 반환합니다.
string::npos는 size_t 타입의 최대값을 의미합니다. size_t 타입의 최대값은 OS에 따라 달라지며 64비트 운영체제라면 64비트 부호가 없는 최대정수, 32비트 운영체제라면 32비트 부호가 없는 최대 정수값을 가집니다. 필자의 컴퓨터는 64비트 운영체제이기 때문에 18446744073709551615라는 값을 가집니다.
pos선언시 pos의 값은 숫자에 불과할텐데 int가 아닌 long long을 사용하신 이유가 궁금합니다!
>> 숫자기 때문에 가장 큰 숫자를 다룰 수 있는 long long을 쓰는게 좋습니다. 이는 함수를 만들 때 확장성적인 측면이 들어갔다라고도 볼 수 있습니다. 예를 들어 매우 큰 문자열에서 어떠한 pos를 찾는다고 했을 때 21억이 넘어가는 pos가 담길 수도 있겠죠? 즉, int로는 커버가 불가능한 경우의 수를 대비해 long long을 기반으로 구축했습니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제가 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.