2012-02-10 1 views
0

Я работаю над программой и сталкиваюсь с проблемой, связанной с cout. Поскольку программа немного большая, и код лучше всего подходит, я вставлю соответствующие фрагменты.Выход cout изменяется в соответствии с типом меток

Во-первых, у меня итератора, *it, определенные в течение как

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

В этом для, если использовать выражение

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

Прекрасно печатает целые числа.

Но, если я использую обозначение

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

Этот код выводит шестнадцатеричные значения. Значения Hex равны целочисленным значениям. Любая идея, почему это происходит?

Заранее спасибо.

ответ

1

Причина

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

выводит шестнадцатеричное значение в том, что -> привязывает сильнее, чем (фаска *) литой, что он оценивает

(*it)->facet_id 

и преобразует результат в фаской *. Указатели выводятся в шестнадцатеричном виде.

+0

Ах да, это имеет смысл. Большое спасибо! – bayindirh

-1

Try включая <iomanip> и:

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

Чтобы сказать, что вы хотите числа в десятичной форме.

+0

К сожалению, выход по-прежнему является шестнадцатеричным. – bayindirh

 Смежные вопросы

  • Нет связанных вопросов^_^