Ugrás a tartalomhoz

iomanip library

A Wikiszótárból, a nyitott szótárból


Főnév

iomanip library (tsz. iomanip libraries)

  1. (informatika) Az iomanip (Input/Output Manipulation) egy olyan C++ fejléce, amely formázási lehetőségeket biztosít a be- és kimeneti adatfolyamokhoz (std::cin, std::cout, std::cerr, stb.). Az iomanip lehetővé teszi a számok, szövegek és egyéb adatok egyéni módosítását a konzolos megjelenítés során.



Főbb funkciók és használatuk

Az iomanip könyvtárban található manipulátorok segítségével különböző formázási beállításokat adhatunk meg.

1. Beállított szélesség (std::setw)

Az std::setw(n) manipulátor egy adott mezőszélességet állít be a következő kiírandó értékre.

#include <iostream>
#include <iomanip>

int main() {
    std::cout << std::setw(10) << 42 << std::endl;
    std::cout << std::setw(10) << "Hello" << std::endl;
    return 0;
}

Kimenet:

        42
     Hello

A setw(10) biztosítja, hogy az értékek legalább 10 karakter széles oszlopban jelenjenek meg.



2. Kitöltőkarakter (std::setfill)

A setfill(c) manipulátor beállítja a kitöltő karaktert a setw() által meghatározott szélességen belül.

#include <iostream>
#include <iomanip>

int main() {
    std::cout << std::setw(10) << std::setfill('*') << 42 << std::endl;
    return 0;
}

Kimenet:

********42

3. Igazítás (std::left, std::right, std::internal)

  • std::left: A szöveget balra igazítja.
  • std::right: A szöveget jobbra igazítja (alapértelmezett).
  • std::internal: A szám előjelét balra, az érték többi részét jobbra igazítja.
#include <iostream>
#include <iomanip>

int main() {
    std::cout << std::setw(10) << std::left << 42 << std::endl;
    std::cout << std::setw(10) << std::right << 42 << std::endl;
    std::cout << std::setw(10) << std::internal << -42 << std::endl;
    return 0;
}

Kimenet:

42        
        42
-       42

4. Decimális számok formázása

Fixpontos (std::fixed) és tudományos (std::scientific) formátum

Az std::fixed manipulátor rögzített tizedespontosságot állít be, míg az std::scientific tudományos (exponenciális) formátumot használ.

#include <iostream>
#include <iomanip>

int main() {
    double num = 123.456789;
    
    std::cout << std::fixed << num << std::endl;
    std::cout << std::scientific << num << std::endl;
    
    return 0;
}

Kimenet:

123.456789
1.234568e+02

Tizedesjegyek száma (std::setprecision)

Az std::setprecision(n) manipulátor az értékek kijelzésének tizedesjegyszámát állítja be.

#include <iostream>
#include <iomanip>

int main() {
    double num = 123.456789;
    
    std::cout << std::fixed << std::setprecision(2) << num << std::endl;
    std::cout << std::fixed << std::setprecision(5) << num << std::endl;
    
    return 0;
}

Kimenet:

123.46
123.45679

5. Számrendszerek (std::dec, std::hex, std::oct)

Az std::dec, std::hex és std::oct manipulátorok a számok tízes, tizenhatos és nyolcas számrendszerben történő kiírására szolgálnak.

#include <iostream>
#include <iomanip>

int main() {
    int num = 255;
    
    std::cout << "Decimális: " << std::dec << num << std::endl;
    std::cout << "Hexadecimális: " << std::hex << num << std::endl;
    std::cout << "Oktális: " << std::oct << num << std::endl;
    
    return 0;
}

Kimenet:

Decimális: 255
Hexadecimális: ff
Oktális: 377

Nagybetűs hexadecimális (std::uppercase)

Az std::uppercase a hexadecimális számokat nagybetűkkel jeleníti meg.

std::cout << std::hex << std::uppercase << 255 << std::endl;

Kimenet:

FF

6. Előtagok és előjelek (std::showbase, std::showpos, std::noshowbase, std::noshowpos)

  • std::showbase: Megjeleníti a számrendszer előtagját (pl. 0x a hexadecimálisnál, 0 az oktálisnál).
  • std::showpos: A pozitív számok elé + jelet tesz.
  • std::noshowbase / std::noshowpos: Kikapcsolja ezeket a beállításokat.
#include <iostream>
#include <iomanip>

int main() {
    int num = 255;
    
    std::cout << std::showbase << std::hex << num << std::endl;
    std::cout << std::showpos << std::dec << num << std::endl;
    
    return 0;
}

Kimenet:

0xff
+255

7. Bool formázás (std::boolalpha, std::noboolalpha)

Az std::boolalpha manipulátor lehetővé teszi, hogy a logikai értékeket "true" és "false" formában írja ki számok helyett.

#include <iostream>
#include <iomanip>

int main() {
    std::cout << std::boolalpha << true << " " << false << std::endl;
    return 0;
}

Kimenet:

true false

A std::noboolalpha visszakapcsolja a numerikus formátumot (1 és 0).



Összegzés

Az iomanip könyvtár egy erőteljes eszköz a formázott kiírásokhoz C++-ban. Segítségével: - Igazíthatjuk és szélességet adhatunk a kiírásokhoz. - Beállíthatjuk a tizedesjegyek számát és a számrendszert. - Tudományos és fixpontos formátumokat használhatunk. - Bool típusokat szövegesen írhatunk ki. - Kitöltő karaktereket és előjeleket módosíthatunk.

Ezek a manipulátorok jelentősen növelik a C++ nyelv rugalmasságát és lehetőséget adnak esztétikusabb konzolos megjelenítésre.