std:: setbase
|
Défini dans l'en-tête
<iomanip>
|
||
|
/*unspecified*/
setbase
(
int
base
)
;
|
||
Définit la base numérique du flux. Lorsqu'il est utilisé dans une expression
out
<<
setbase
(
base
)
ou
in
>>
setbase
(
base
)
, modifie le drapeau
basefield
du flux
out
ou
in
, selon la valeur de
base
:
-
la valeur
16
définit
basefieldsur std::ios_base::hex . - la valeur 8 définit std::ios_base::oct .
- la valeur 10 définit std::ios_base::dec .
Les valeurs de
base
autres que 8, 10 ou 16 réinitialisent
basefield
à zéro, ce qui correspond à une sortie décimale et une entrée dépendante du préfixe.
Table des matières |
Paramètres
| base | - | nouvelle valeur pour basefield |
Valeur de retour
Un objet de type non spécifié tel que
-
si
out
est un objet de type
std::
basic_ostream
<
CharT, Traits
>
, l'expression
out
<<
setbase
(
base
)
- a pour type std:: basic_ostream < CharT, Traits > &
- a pour valeur out
- se comporte comme si elle appelait f ( out, base )
-
si
in
est un objet de type
std::
basic_istream
<
CharT, Traits
>
, l'expression
in
>>
setbase
(
base
)
- a pour type std:: basic_istream < CharT, Traits > &
- a pour valeur in
- se comporte comme si elle appelait f ( in, base )
où la fonction f est définie comme :
void f(std::ios_base& str, int base) { // définir le champ de base 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); }
Exemple
#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'; }
Sortie :
Parsing string "10 0x10 010" hexadecimal parse: 16 16 16 prefix-dependent parse: 10 16 8 hex output: 0xa 0x10 0x8
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 183 | C++98 |
setbase
ne pouvait être utilisé qu'avec des flux
de type std::ostream ou std::istream |
utilisable avec tout
flux de caractères |
Voir aussi
|
modifie la base utilisée pour les E/S d'entiers
(fonction) |
|
|
contrôle si le préfixe est utilisé pour indiquer la base numérique
(fonction) |