2017-06-29 1 views
1

Est-il possible de supprimer tous les indicateurs de mise en forme à l'aide de unsetf en C++?Désactivation de tous les indicateurs de mise en forme

Ou est-il au moins légal d'annuler tous les indicateurs basefield ou floatfield?

Quel est le comportement défini, par ex. std::cout pour cela?

+0

Hmmm, au moins les non collants seront toujours par défaut? –

+0

Connexes: https://stackoverflow.com/questions/28257527/resetting-output-flags-in-c –

+0

@ πάνταῥεῖ Je pose des questions sur 'std :: ios_base :: flags', car je connais le seul" drapeau " considéré comme non-collant est "largeur" ​​('std :: setw'), mais ce qui est défini par exemple juste le 'basefield' mis à 0 et produisant un entier? BTW, si je comprends bien, il y a 'std :: defaultfloat' pour' floatfield' donc je suppose que la question se rétrécit. – ledonter

Répondre

1

Le comportement est en effet défini. J'ai regardé ceci lors de l'écriture d'un opérateur d'insertion pour les grands entiers. Les tables fournissant des spécificateurs de format pour des indicateurs spécifiques tels que table 75 (qui concerne basefield) ou table 76 (floatfield) ont une valeur par défaut dans tous les cas. Voir aussi cppreference/num_put.