Formátování textů na textové konzoli
C++ 11

image_printTisk

V tomto článku si popíšeme, jak provádět formátovaný výstup na textovou konzoli. Výše uvedené způsoby formátování výstupu lze ale použít, jak se dále dovíme, i při zápisu do souboru nebo do paměťového bufferu.

Zápis datových typů

Jak jsme již mnohokrát mohli vidět, jednoduchý vestavěný datový typ lze zapsat do výstup pomocí operátoru <<. Viz třeba pro opakování následující příklad:

int a = 10;
cout << "Foo: " << a << endl;

Na příkladu je vidět výstup textu a hodnoty proměnné a na standardní výstup se zápisem znaku konce řádku.

Dále jsme si již popsali i to, že jazyk C++ umožňuje definovat tzv. uživatelsky definované datové typy, a to formou struktury nebo třídy. Tyto uvedené prvky lze nalézt v tomto článku o datových strukturách.

Lze samozřejmě provádět i výstup struktur a tříd na standardní konzoli nebo do souboru, zde ale již potřebujeme hlubší znalosti problematiky OOP, konkrétně znalosti kolem přetěžování operátorů. Více o tomto tématu bude pojednáno až v následujících kapitolách o OOP a STL.

Zápis čísel v různých číselných soustavách

Možná si teď stojí na místě položit otázku, zda je možné nějak upravovat či ovlivnit výstup, který se zapisuje do soubor nebo na textovou konzoli. Dobrou zprávou je, že je to možné za použití tzv. “manipulátorů”, které nastavují určité parametry na příslušný typ výstupu (soubor, textová konzole nebo paměťový buffer).

Začneme popisem manipulátorů, které slouží pro zápis čísel v různých číselných soustavách. Jsou to následující:

  • dec – nastaví výstup pro zápis čísel v desítkové soustavě
  • hex – nastaví výstup pro zápis čísel v soustavě šestnáctkové
  • oct – nastaví výstup pro zápis čísel v osmičkové soustavě

Více si objasníme, jak používat manipulátory, na následujícím příkladu:

#include <iostream>
using namespace std;

int main() {
    int a = 100;
    cout << "Desítková soustava: " << dec << a << endl;
    cout << "Šestnáctková soustava: " << hex << a << endl;
    cout << "Osmičková soustava: " << oct << a << endl;

    return 0;
}

Na příkladu je vidět, že při zřetězení výstupu pomocí operátoru << stačí před zápisem čísla uvést příslušný manipulátor číselné soustavy.

Předchozí příklad má ale jednu vadu, nevidíme na výstupu, jaké číselné soustavy dané číslo je. Zapnutí zobrazení typu číselné soustavy čísla můžeme provést pomocí manipulátoru showbase a zase jej vypnout pomocí noshowbase. Více na následujícím příkladu:

#include <iostream>
using namespace std;

int print(int a) {
    cout << "Desítková soustava: " << dec << a << endl;
    cout << "Šestnáctková soustava: " << hex << a << endl;
    cout << "Osmičková soustava: " << oct << a << endl;
}

int main() {
    int a = 100;
    cout << showbase;
    print(a);
    cout << endl << noshowbase;
    print(a);

    return 0;
}

Příklad ukazuje, že číselná soustava čísla je stejná jako v případě zápisu čísel do zdrojového kódu.

Zápis desetinných čísel

  1. double
    1. defaultfloat
    2. scientific
    3. fixed
    4. showpoint
    5. noshowpoint
    6. ios.precision

Zápis logických hodnot

  1. bool
    1. boolalpha
    2. noboolalpha

Zápis textů a zarovnání výstupu

  1. string
    1. uppercase
    2. nouppercase
  2.  zarovnání výstupu
    1. left
    2. right
    3. ios.width
    4. ios.fill

Manipulátory pro formátovaný vstup

TODO

image_printTisk
Formátování textů na textové konzoli
C++ 11
Ohodnoťte tento článek

Související články

  • Datový typ “string” podrobněji Datový typ string nás provází od počátku studia jazyka C++ na těchto stránkách. V tomto článku se hlouběji seznámíme, jak funguje a co nám nabízí za funkce, které pro práci s textem můžeme […]
  • Paměťový buffer – třída “stringstream” V této kapitole uzavřeme téma kolem vstupu a výstupu. Zatím jsme si ukázali, jak je možné provádět vstup a výstup na textovou konzoli a do souboru. Tato kapitola popisuje poslední datový […]
  • Práce se soubory pomocí knihovny STL V tomto článku si popíšeme základy práce se soubory pomocí knihovny STL. Práce se soubory pomocí této knihovny je mnohem snadnější, než pomocí staršího přístupu pomocí standardní knihovny […]
  • Šablony tříd Tak, jak lze vytvářet šablony funkcí, lze vytvářet i šablony tříd, struktur a unionů. Pomocí těchto šablon potom překladač generuje nové uživatelsky definované datové typy. Ukážeme si […]
  • Šablony funkcí I Tímto článkem si představíme nový pojem, a to je generické programování v C++. Jedná se o způsob programování, jehož základní znalost je nutná pro použití jedné z nejdůležitějších knihoven […]
  • Vícerozměrná pole Tento článek pojednává o vícerozměrných polích v jazyce C++. Seznámíme se s jejich významem, deklarací, inicializací a způsobem zápisu a čtení jejich hodnot. Na závěr článku bude zmíněno, […]