2012-02-10 6 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を持っています。

しかし、私は表記

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

を使用する場合は、このコードでは、進値を出力します。 16進値は整数値に等しい。なぜこれが起こっているのか?

ありがとうございます。あなたは、小数点形式で数字をしたいと言って

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

<iomanip>とを含む

答えて

1

理由

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

プリントアウト進値がということです - >は(小面*)のキャストよりも硬く結合し、それはそれは

(*it)->facet_id 

を評価し、ファセットに結果をキャストしています*。ポインタは16進数で出力されます。

+0

ああ、それは理にかなっている。どうもありがとう! – bayindirh

-1

してみてください。

+0

残念ながら、出力はまだ16進です。 – bayindirh

関連する問題