2009-10-13 3 views
1

C++ 스트림 i/o에서 사용되는 pos_type 또는 offset_type의 크기는 어떻게 결정됩니까? sizeof (pos_type) 또는 sizeof (basic_streambuf :: pos_type)를 작성할 수 없다. 왜냐하면 템플릿 내부에 어떻게 든 정의되어 있기 때문이다 ... 꽤 복잡하다.C++의 FILE ADDRESS 크기

컴파일 타임에 이것을 알아두면 좋을 것입니다.

현재 BTW에는 청구서에 맞는 것으로 보이는 'streamsize'유형이 있지만 sizeof (streamsize)는 유효한 선행 프로세서 용어가 아닙니다.

답변

0

basic_streambuftemplate class입니다. 사용하기 전까지는 완전히 정의되지 않았습니다. 템플릿 전문 분야의 회원에게는 sizeof을 사용합니다. streambuf::pos_type.

+0

sizeof (streambuf :: pos_type) 또는 streambuf :: pos_type x를 말하면 24면됩니다. cout << sizeof (x) .... 그래서, pos_type은 정수 나 다른 것으로 변환 할 수있는 일종의 클래스이지만 실수가 아니라면 24 바이트 파일 주소가 아닙니다. 나를 용서해주십시오. 내가 C++을 많이해온 이후로 꽤 오래되었습니다. –

1

템플릿의 인스턴스화시 sizeof를 사용해야합니다. sizeof(ifstream::pos_type)

+0

글쎄, sizeof (streambuf :: pos_type) 또는 streambuf :: pos_type x라고 말하면 24입니다. cout << sizeof (x) .... 그래서, pos_type은 정수 나 다른 것으로 변환 할 수있는 일종의 클래스이지만 실수가 아니라면 24 바이트 파일 주소가 아닙니다. 나를 용서해주십시오. 내가 C++을 많이해온 이후로 꽤 오래되었습니다. –

+0

'sizeof (T)'가 24이면 T는 24 바이트 유형입니다. 그것은 C++에서'sizeof'와'byte'의 정의입니다. – MSalters