std::string::size_type stringSize = greeting.size();
위 코드를 보면 stringSize
라는 변수를 std::string
클래스가 제공하는
size_type
으로 정의한다.
위의 size_type
은 string
이 담을 수 있는 최대 문자 개수를 저장할 수 있는 타입이다.
참고로,
size_type은 allocator< T >의 size_type과 같다. 또, size_type은 cstddef에 선언된 size_t와 동일한 타입이다. size_t는 sizeof 연산자의 리턴 타입이며, unsigned int이고, 기계에 의존적인 값이다
- typedef unsigned int size_t와 같은 타입이다.
- std::string, std::vector, std::map에서 사이즈를 나타낸다.
- 64bit 환경에서는 당연히 unsigned __int64형태를 띈다.
출처:
https://celdee.tistory.com/474 [날개의 기억]
https://zionlee.tistory.com/10 [고도]
int
형을 사용하지 않고 string
클래스가 제공하는 size_type
을 사용하는 것일까?그것은 String
이 (string
형의 객체인) greeting
의 문자 개수가 얼마나 커지든 간에 상관없이
그 값을 저장할 수 있도록 하기 위한것이다.
stringSize
의 값은 greeting
의 길이에 좌우되는데
만일 greeting
이 사용자에게서 문자열을 입력받는다면,
특정 사용자가 int
형으로 표현 가능한 길이 보다 더욱 긴 문자열을
greeting
의 입력으로 주었을때
int
형으로 정의한 stringSize
는 그 길이를 감당할 수 없게 된다.
이처럼 라이브러리가 특정 목적에 부합되도록
미리 정의한 타입을 사용하는 것이 좋은 습관이라고 accelerated c++ 에서는 말하고 있다.
출처:https://zbaekhk.blogspot.com/2011/06/stdstringsizetype.html [백흠경]