
A biblioteca <iomanip> fornece recursos para manipular a formatação de saída, como a base usada ao formatar inteiros e a precisão dos valores de ponto flutuante .
Ela dispõe das seguintes funções:
setiosflags - Define formato dos sinalizadoresresetiosflags - Reseta formato dos sinalizadoressetbase - Define a base dos sinalizadoressetfill - Define o preenchimento dos caracteressetprecision - Define a precisão dos decimaissetw - Define a largura de um campoget_money - Obtém o valor monetárioput_money - Insere o valor monetárioget_time - Obtém a hora e dataput_time - Obtém a hora e datastd::quoted - Adiciona aspas duplas em torna da string, ex.: Oi → "Oi"setfill e setwPreenche com determinado caractere ao lado esquerdo do número(int, float, double,…)
#include <iostream>
#include <iomanip>
int main(){
std::cout << std::setfill (' ') << std::setw( 10 );
std::cout << 3.69f << '\n';
return 0;
}Preencheu com 6 espaços em branco(10 menos a quantidade de caracteres do número), logo a saída será: ` 3.69
. Se alterarmos ostd::setfill (‘ ‘)porstd::setfill (‘-‘)a saída será:——3.69` .
setprecisionDefine quantos algarismo você deseja que apareça se não houver mais após a vírgula( nesse caso, ponto . ), preencherá com zeros 0 se usarmos std::fixed .
#include <iostream>
#include <iomanip>
int main(){
double pi = 3.14159;
std::cout << std::setprecision( 3 ) << pi << '\n';
return 0;
}Saída:
3.14
#include <iostream>
#include <iomanip>
int main(){
double pi = 3.14159;
std::cout << std::setprecision( 4 ) << pi << '\n';
return 0;
}Saída:
3.142porquê o próximo número significativo é igual ou maior à 5, logo ele apromixa o anterior .
E se alterar para std::setprecision( 9 ), a saída será: 3.14159 não completará com zeros, mas usando std::fixed
#include <iostream>
#include <iomanip>
int main(){
double pi = 3.14159;
std::cout << std::fixed << std::setprecision( 9 ) << pi << '\n';
return 0;
}A saída será:
3.141590000.
get_money e put_moneyInforma o valor em inteiro, em outras palavras transforma: float, double,… em inteiro. São úteis para uso com inserção de dados. Exemplo:
#include <iomanip>
#include <iostream>
int main() {
long double preco;
std::cout << "Informe o preço: ";
std::cin >> std::get_money( preco );
if( std::cin.fail() ){
std::cerr << "Falha ao ler o preço" << '\n';
return 1;
}else{
std::cout << "O preço é: " << std::put_money( preco ) << '\n';
}
return 0;
}
get_timeTrata a inserção de horas, exemplo:
#include <iostream>
#include <iomanip>
#include <ctime> // struct std::tm
int main(){
struct std::tm dthr;
std::cout << "Informe a hora: ";
std::cin >> std::get_time(&dthr,"%R"); // extrai as horas em formato 24H
std::cout << "São " <<
dthr.tm_hour << " horas e "
<< dthr.tm_min << " minutos\n";
return 0;
}Exemplo:
Informe a hora: 12:23
São 12 horas e 23 minutosPor hoje é só, são pequenas doses diárias que farão sempre nos manter antenado com o C++ !
Então se inscreva nos nossos Cursos de C++ Moderno . Você aprender criar:
Acesse o endereço:
Para mais informações consulte: