void main(void) { char *endptr; char str[] = "abcd"; long num = strtol(str, &endptr, 16); cout << num << endl; }
프로그램 실행화면
long strtol(const char *nptr, char **endptr, int base);
문자 또는 문자열을 숫자로 바꿔주는 함수 중 하나이다. atoi(), atol()함수와 다른 점이 있다. 넘겨주는 인자의 갯수만 봐도 1개에서 3개로 늘어났다.
nptr은 변환하고자 하는 문자 또는 문자열을 넘겨주는 인자이다. 두 번째 인자는 만약 문자열을 변환하는 도중에 애러가 발생했다면 애러가 발생한 주소값이 저장된다.
어디서 애러가 났는지 알 수 있는 것이다. 3번째 인자는 눈치챘겠지만 몇 진수가 인자로 넘어갔는지 지정할 수 있다.
str[] = "abcd"로 되어있다. f가 없기 때문에 15진수인지 16진수인지 모를수도 있지만 보통 16진수를 쓰기 때문에 별 문제는 안될 것 같다.
'abcd'에 해당하는 10진수의 값이 반환되어 출력되는 것을 볼 수 있다. 반환값의 데이터 타입은 long이다.