hex showbase

MI
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:58
0

Hej, i znów mam problem, czy showbase'm mogę w jakiś spsób wydrukować 0xA zamiast 0xa ? zależy mi aby porgram wypisywał duże litery po 0x... Nie wiem czy dobrze to wyjaśniłem, jeśli coś nie tak myślę, albo piszę to postaram się to poprawić.

kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 12 godzin
  • Lokalizacja:Szczecin
1

Użyj std::uppercase


MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:2 minuty
1

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
MI
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:58
0

Problem jest chyba trochę bardziej złożony, napisałem taki program:

Kopiuj
#include <iostream>
#include <string>

using namespace std;

int main()
{
    int x;
    cin.unsetf(ios::basefield);
    cout.setf(ios::showbase);
    cout << uppercase;
    while(cin >> x) {
    cout << oct << x << ' ' << dec << x << ' '<< hex << x << '\n';
    }

    return 0;
}

Ale go w ten sposób chyba nie jestem w stanie sformatować ? Muszę mieć na wyjściu np : 0xF, a mam albo 0xf, albo 0XF, jestem jakoś w stanie to rozwiązać ?

kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 12 godzin
  • Lokalizacja:Szczecin
0

Nie możesz po prostu napisać cout << "0x" << hex << uppercase << x?


MI
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:58
0

na razie działa mi tylko tak, ale nie jest to chyba zbyt eleganckie

Kopiuj

#include <iostream>
#include <string>

using namespace std;

int main()
{
   int x;
   cin.unsetf(ios::basefield);
   cout.setf(ios::showbase);
   cout << uppercase;
   while(cin >> x) {
   cout << oct << x<< ' ' <<dec << x << ' '<<"0x"<<noshowbase<<hex << x << '\n';
   }

   return 0;
}
kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 12 godzin
  • Lokalizacja:Szczecin
0

Nie ustawiaj showbase żeby zaraz wyłączyć.


MI
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:58
0

Czyli to będzie najbardziej ,,elegancka" wersja ?

Kopiuj
#include <iostream>
#include <string>

using namespace std;

int main()
{
    int x;
    cin.unsetf(ios::basefield);
    cout << uppercase;
    while(cin >> x) {
    cout << "0" << oct << x<< ' ' << dec << x << ' ' << "0x" << hex << x << '\n';
    }

    return 0;
}


edytowany 2x, ostatnio: mikko
kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 12 godzin
  • Lokalizacja:Szczecin
0

basefield chyba też zbędne. Ale tak, tak mi się wydaje. Ewentualnie możesz własny modyfikator napisać, ale to więcej zachodu niż to warte imo.


MI
Bardzo Ci dziękuję za pomoc dopiero raczkuję, i czasami nie widzę takich oczywistości ;)
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:2 minuty
0

https://wandbox.org/permlink/oNxHfiCl3GLFpqmG
A ios::basefield to tylko maska na ios::dec| ios::hex| ios::oct, więc niewiele to robi.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.