hex showbase

MI
  • Rejestracja: dni
  • Ostatnio: dni
  • 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
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
1

Użyj std::uppercase

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
MI
  • Rejestracja: dni
  • Ostatnio: dni
  • 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
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
0

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

MI
  • Rejestracja: dni
  • Ostatnio: dni
  • 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
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
0

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

MI
  • Rejestracja: dni
  • Ostatnio: dni
  • 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;
}


kq
  • Rejestracja: dni
  • Ostatnio: dni
  • 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.

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
0

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

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.