java String의 startsWith 메서드는, str이 prefix로 시작하는지를 검사하는 함수입니다. 2번째 인자에 offset을 넣을 수도 있는데요. 이는 str의 offset부터 끝까지는 부분 문자열 sub로 잡았을 때, sub가 prefix로 시작하는지를 검사합니다. 그러면, endsWith도 내부적으로는 startsWith를 쓰겠네요. 쓰는 방법은 아래와 같습니다. boolean startsWith(String prefix); boolean startsWith(String prefix, int offset); 보통 위에 것을 꽤 쓰는 편입니다. 그러면 이들이 어떻게 동작하는지 내부를 간단히 보아야 겠군요. 먼저 String 인자만 하나 넘겨주면 그림에서의 1433번째 줄에 들어갑니다. 그..
레퍼런스 검색 결과
두 문자열을 비교하려고 합니다. 어떻게 하면 좋을까요? 이렇게 비교하면 어떨까요? 실제로는 not equal이 뜹니다. 왜 그럴까요? 실제로 p1과 p2는 다른 위치에 메모리상에 할당되어 있기 때문입니다. 정확히는 p1은 p1 배열이 시작하는 주솟값을, p2는 p2배열이 시작하는 주솟값을 가지고 있을 겁니다. 이 둘은 다르기 때문에, p1과 p2를 비교하면 다르다고 출력이 됩니다. 내용이 같음에도 불구하고요. 이것을 손쉽게 하는 방법이 없을까요? 안에는 strcmp 함수가 있습니다. 이 함수는 다음과 같습니다. int strcmp(const char *str1,const char *str2); str1이 str2보다 사전순으로 앞서면 음수를, 같으면 0을, 뒤이면 양수를 리턴합니다. 보통, 어떠한 문자열..
저번에 time_t를 struct tm으로 변환하는 함수인 localtime을 배웠습니다. 이번에는 struct tm을 time_t로 바꾸는 함수를 배워봅시다. 그 중 하나는 mktime() 이라는 함수인데요. 이것은 현재 날짜와 시간을 알 때, 1970년 1월 1일부터 현재까지 흐른 시간을 초 단위로 리턴해 주는 함수입니다. [관련글] C언어 localtime 함수 알아봅시다. 혹여나, localtime이라는 함수가 무엇인지 잘 모르신다면 관련글을 먼저 보고 오시는 것도 좋겠습니다. 개략적으로, time_t를 struct tm으로, 다시 struct tm을 time_t로 변환해주는 메서드는 다음과 같습니다. 여태까지 배웠던 것에 의하면 말입니다. 예를 들어서, 현재의 날짜가 1970년 1월 3일 0시 ..
이분 탐색을 할 때 유용한 2가지 함수를 소개해 드리고자 합니다. c++의 헤더에는 lower_bound 함수가 있어요. 그리고 upper_bound 함수가 있는데요. random 접근이 가능한 경우, O(log)에 수행하게 해 주는 함수입니다. lower_bound(first_iter,last_iter,key); upper_bound(first_iter,last_iter,key); 대충 요약하면 [first_iter, last_iter)에 대해서, key값보다 크거나 같은 최초의 위치, key 값보다 큰 최초의 위치를 리턴하는데요. iterator를 리턴해요. 위치를 리턴한다는 것입니다. 물론, Object를 lower_bound, upper_bound를 써야 할 경우도 종종 있는데요. 이러한 경우, ..
c언어에서 time(NULL) 함수로, 1970년 1월 1일부터 현재까지 경과된 초를 리턴한다고 했었습니다. 이 값만 끌어와서 뭔가 의미있는 데이터로 가공하고 싶은데, 어떻게 하면 좋을까요? 현재까지 경과된 초를 넘겨주면, 데이터를 잘 가공해서, struct tm *형을 리턴해 주는 함수가 있는데요. 이것이 localtime 함수입니다. struct tm *localtime(time *cur_t); 그러면, struct tm형은 어떠한 필드들로 이루어져 있을까요? 예제에서 다루는 중요한 필드만 몇 개 봅시다. tm_sec, tm_min, tm_hour는 각각 시, 분, 초를 의미합니다. 그리고, tm_mday, tm_mon, tm_year가 있는데요. 이것은, 각각 몇 일, 몇 월, 몇 년임을 의미합니다..
최근댓글