Namensräume
Varianten
Aktionen

std::setbase

Von cppreference.com
< cpp‎ | io‎ | manip
 
 
 
Input/output-Manipulatoren
Formatierung von Gleitkommazahlen
Ganzzahlformatierung
Boolean-Formatierung
Feldbreiten- und Füllzeichensteuerung
Andere Formatierungen
Leerzeichenverarbeitung
Ausgabe-Flushen
(C++20)  

Statusflags-Manipulation
Zeit- und Geld-I/O
(C++11)
(C++11)
(C++11)
(C++11)
Gequoteter Manipulator
(C++14)
 
Definiert im Header <iomanip>
/*unspecified*/ setbase( int base );

Setzt die numerische Basis des Streams. Bei Verwendung in einem Ausdruck out << setbase(base) oder in >> setbase(base) wird das Flag basefield des Streams out oder in geändert, abhängig vom Wert von base

Werte von base außer 8, 10 oder 16 setzen basefield auf Null zurück, was der dezimalen Ausgabe und der präfixabhängigen Eingabe entspricht.

Inhalt

[edit] Parameter

base - neuer Wert für basefield

[edit] Rückgabewert

Ein Objekt eines nicht spezifizierten Typs, so dass

  • Wenn out ein Objekt vom Typ std::basic_ostream<CharT, Traits> ist, verhält sich der Ausdruck out << setbase(base)
    • vom Typ std::basic_ostream<CharT, Traits>& ist
    • hat den Wert out
    • als ob er f(out, base) aufrufen würde
  • Wenn in ein Objekt vom Typ std::basic_istream<CharT, Traits> ist, verhält sich der Ausdruck in >> setbase(base)
    • vom Typ std::basic_istream<CharT, Traits>& ist
    • hat den Wert in
    • als ob er f(in, base) aufrufen würde

wobei die Funktion f definiert ist als

void f(std::ios_base& str, int base)
{
    // set basefield
    str.setf(base == 8 ? std::ios_base::oct :
        base == 10 ? std::ios_base::dec :
        base == 16 ? std::ios_base::hex :
        std::ios_base::fmtflags(0), std::ios_base::basefield);
}

[edit] Beispiel

#include <iomanip>
#include <iostream>
#include <sstream>
 
int main()
{
    std::cout << "Parsing string \"10 0x10 010\"\n";
 
    int n1, n2, n3;
    std::istringstream s("10 0x10 010");
 
    s >> std::setbase(16) >> n1 >> n2 >> n3;
    std::cout << "hexadecimal parse: " << n1 << ' ' << n2 << ' ' << n3 << '\n';
 
    s.clear();
    s.seekg(0);
 
    s >> std::setbase(0) >> n1 >> n2 >> n3;
    std::cout << "prefix-dependent parse: " << n1 << ' ' << n2 << ' ' << n3 << '\n';
 
    std::cout << "hex output: " << std::setbase(16)
              << std::showbase << n1 << ' ' << n2 << ' ' << n3 << '\n';
}

Ausgabe

Parsing string "10 0x10 010"
hexadecimal parse: 16 16 16
prefix-dependent parse: 10 16 8
hex output: 0xa 0x10 0x8

[edit] Fehlerberichte

Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 183 C++98 setbase konnte nur mit Streams verwendet werden
vom Typ std::ostream oder std::istream
verwendbar mit jedem
Zeichenstrom

[edit] Siehe auch

Ändert die Basis, die für die Ganzzahl-I/O verwendet wird
(Funktion) [bearbeiten]
Steuert, ob ein Präfix zur Anzeige der numerischen Basis verwendet wird
(Funktion) [bearbeiten]