Introdução aos Manipuladores de Fluxo
Os manipuladores de fluxo em C++ fornecem formas poderosas de controlar a formatação de saída, permitindo um controlo preciso sobre como os dados são exibidos.
| Manipulador |
Finalidade |
Cabeçalho |
std::setw() |
Definir a largura do campo |
<iomanip> |
std::setprecision() |
Controlar a precisão decimal |
<iomanip> |
std::fixed |
Notação de ponto fixo |
<iomanip> |
std::scientific |
Notação científica |
<iomanip> |
std::hex |
Saída hexadecimal |
<iomanip> |
Manipuladores de Notação Numérica
#include <iostream>
#include <iomanip>
int main() {
double valor = 123.456789;
// Notação de ponto fixo
std::cout << std::fixed
<< std::setprecision(2)
<< valor << std::endl;
// Notação científica
std::cout << std::scientific
<< valor << std::endl;
return 0;
}
Manipuladores de Conversão de Base
graph LR
A[Base Numérica] --> B[Decimal]
A --> C[Hexadecimal]
A --> D[Octal]
A --> E[Binário]
Exemplo de Conversão de Base
#include <iostream>
#include <iomanip>
int main() {
int número = 255;
// Representação decimal
std::cout << "Decimal: "
<< std::dec << número << std::endl;
// Representação hexadecimal
std::cout << "Hexadecimal: "
<< std::hex << número << std::endl;
// Representação octal
std::cout << "Octal: "
<< std::oct << número << std::endl;
return 0;
}
#include <iostream>
#include <iomanip>
int main() {
bool sinal = true;
// Saída booleana padrão
std::cout << "Padrão: " << sinal << std::endl;
// Saída booleana textual
std::cout << std::boolalpha;
std::cout << "Textual: " << sinal << std::endl;
return 0;
}
#include <iostream>
#include <iomanip>
int main() {
// Combinando múltiplos manipuladores
std::cout << std::setfill('*')
<< std::setw(10)
<< std::left
<< std::hex
<< 255
<< std::endl;
return 0;
}
Boas Práticas para Desenvolvedores LabEx
- Inclua sempre
<iomanip> para formatação avançada
- Utilize manipuladores para melhorar a legibilidade do código
- Reinicie os estados dos manipuladores quando necessário
- Combine manipuladores para formatação complexa
- Esteja ciente das implicações de desempenho
Gestão de Estado dos Manipuladores
#include <iostream>
#include <iomanip>
int main() {
// Guardar e restaurar o estado do fluxo
std::ios_base::fmtflags flags_originais =
std::cout.flags();
// Executar formatação
std::cout << std::hex << 255 << std::endl;
// Restaurar a formatação original
std::cout.flags(flags_originais);
return 0;
}