Выходной сигнал cout изменяется в соответствии с типом вставки - PullRequest
0 голосов
/ 11 февраля 2012

Я работаю над программой, и у меня странная проблема, связанная с 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";

Этот код выводит шестнадцатеричные значения. Шестнадцатеричные значения равны целочисленным значениям. Есть идеи, почему это происходит?

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

Ответы [ 2 ]

1 голос
/ 11 февраля 2012

Причина

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

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

(*it)->facet_id

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

0 голосов
/ 11 февраля 2012

Попробуйте включить <iomanip> и:

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

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

...