[c++] ostringstream dlaczego takie kombinacje

0

Pytanie w komentarzu, z gory dzieki:)

 




void printfloat(float x)
{
  
   float *a;
   a = &x;
   ostringstream s;
   s<<hex<<*(reinterpret_cast<int*>(a));  // dlaczego np. s<<hex<<x nie zadiala, tylko konieczne te wskazniki i rzutowania ?
   string w=s.str();

   if (x==0)
   {
       cout<<"0 0 0 0"<<endl;
       return;
   }
   
 
      if (w[0]!='0') cout << w[0];
        cout << w[1] << " ";
        if (w[2]!='0') cout << w[2];
        cout << w[3] << " ";
        if (w[4]!='0') cout << w[4];
        cout << w[5] << " ";
        if (w[6]!='0') cout << w[6];
        cout << w[7] << endl;
   
}
0

A widziałeś prostą konwersję liczby zmiennoprzecinkowej do Hex , bo ja nie .
Rzutowanie pozwala na "pobranie" części całkowitej float i wyświetlenie wyniku , gubiona jest wartość znajdująca się po przecinku .
Strumień nie poradzi sobie z wyświetleniem hex float bezpośrednio tak jak z int .
http://www.google.pl/search?hl=pl&source=hp&q=float+w+Hex&aq=f&aqi=&aql=&oq=&gs_rfai=
Może lepiej użyć <stdio.h>

0

szort ansa: bo hex ma wpływ na wyświetlanie int

ów, a nie <code noframe>float

ów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1