Biblioteca C ++ IOS - Setf

Descrição

É usado para definir sinalizadores de formato específicos. Os sinalizadores de formato de um fluxo afetam a maneira como os dados são interpretados em certas funções de entrada e como são escritos por certas funções de saída. Veja ios_base :: fmtflags para os valores possíveis dos argumentos desta função.

Declaração

A seguir está a declaração para a função ios_base :: setf.

set (1)	fmtflags setf (fmtflags fmtfl);
mask (2) fmtflags setf (fmtflags fmtfl, fmtflags mask);

A primeira forma (1) define os sinalizadores de formato do fluxo cujos bits são definidos em fmtfl, deixando o resto inalterado, como se fosse uma chamada para sinalizadores (fmtfl | sinalizadores ()).

A segunda forma (2) define os sinalizadores de formato do fluxo cujos bits são definidos em fmtfl e mask, e limpa os sinalizadores de formato cujos bits são definidos em mask, mas não em fmtfl, como se uma chamada para sinalizadores ((fmtfl & mask) | (sinalizadores () e ~ máscara)).

Parâmetros

fmtfl- Sinalizadores de formato a serem definidos. Se a segunda sintaxe for usada, apenas os bits definidos em fmtfl e mask são definidos nos sinalizadores de formato do fluxo; os sinalizadores definidos na máscara, mas não no fmtfl, são apagados.

mask - Máscara contendo os sinalizadores a serem modificados.

Valor de retorno

Os sinalizadores de formato selecionados no fluxo antes da chamada.

Exceções

Basic guarantee - se uma exceção for lançada, o fluxo está em um estado válido.

Corridas de dados

Modifica o objeto stream. O acesso simultâneo ao mesmo objeto de fluxo pode causar disputas de dados.

Exemplo

No exemplo abaixo explica sobre a função ios_base :: setf.

#include <iostream>     

int main () {
   std::cout.setf ( std::ios::hex, std::ios::basefield );  
   std::cout.setf ( std::ios::showbase );                  
   std::cout << 100 << '\n';
   std::cout.unsetf ( std::ios::showbase );                
   std::cout << 100 << '\n';
   return 0;
}

Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado -

0x64
64