Namespaces
Variants

std:: setbase

From cppreference.net
< cpp ‎ | io ‎ | manip
Definiert im Header <iomanip>
/*unspecified*/ setbase ( int base ) ;

Setzt die numerische Basis des Streams. Wenn in einem Ausdruck verwendet out << setbase ( base ) oder in >> setbase ( base ) , ändert das basefield -Flag des Streams out oder in , abhängig vom Wert von base :

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

Inhaltsverzeichnis

Parameter

base - neuer Wert für basefield

Rückgabewert

Ein Objekt eines nicht näher spezifizierten Typs, sodass

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

wobei die Funktion f definiert ist als:

void f(std::ios_base& str, int base)
{
    // Basis-Feld setzen
    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);
}

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

Fehlerberichte

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

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

Siehe auch

ändert die Basis für Ganzzahl-Ein-/Ausgabe
(Funktion)
steuert, ob Präfix zur Angabe der numerischen Basis verwendet wird
(Funktion)