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 [백흠경]