std::setbase
Von cppreference.com
| 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
- Der Wert 16 setzt
basefieldauf std::ios_base::hex. - Der Wert 8 setzt std::ios_base::oct.
- Der Wert 10 setzt std::ios_base::dec.
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
Führen Sie diesen Code aus
#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 werdenvom 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) | |
| Steuert, ob ein Präfix zur Anzeige der numerischen Basis verwendet wird (Funktion) |