2012-02-10 3 views
0

저는 프로그램에서 일하고 있고 이상한, cout과 관련된 문제가 있습니다. 프로그램이 약간 크고 코드가 가장 잘 쓰여지기 때문에 관련 스 니펫을 붙여 넣습니다. 내가cout의 출력은 타입 캐스팅 방식에 따라 바뀝니다

facet* facet_to_work_on = *it; 
cout << facet_to_work_on->facet_id << "\t"; 

가 멋지게 정수를 출력 표현을 사용하는 경우

첫째, 나는이에서

for(vector<facet*>::iterator it=facets_to_dump->begin(); it<facets_to_dump->end(); it++)

에 대한 정의 반복자, *it 있습니다.

그러나, 나는이 코드는 16 진수 값을 출력 표기

cout << (facet*)(*it)->facet_id << "\t"; 

을 사용하는 경우. 16 진수 값은 정수 값과 같습니다. 왜 이런 일이 일어나는 지 아십니까?

미리 감사드립니다. <iomanip> 등을 포함

답변

1

이유

cout << (facet*)(*it)->facet_id << "\t"; 

프린트 아웃 헥스 값 즉 *. 포인터는 16 진수로 출력됩니다.

+0

아, 그렇습니다. 고마워요! – bayindirh

-1

봅니다 :

cout << dec << (facet*)(*it)->facet_id << "\t"; 

당신은 십진수 형태의 숫자를한다고 가정합니다. 그게

(*it)->facet_id 

평가이고면에 결과 캐스트>은 (패싯 *) 캐스팅보다 단단한 결합 -

+0

아쉽게도 출력은 여전히 ​​16 진수입니다. – bayindirh