Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Entender o cout
  2. Entender o comando endl
  3. cout: Métodos
  4. Formatação básica
  5. Entender o objeto cin
  6. cin: Métodos
  7. truncar casas decimais

Os tópicos listados acima para estudo são referentes a aplicações console ou linha de comandos podendo não ser válidos para outro tipo de aplicação.

Outros tipos de entrada de dados como arquivos de texto e binários serão vistos com mais detalhes em C++: Leitura/Escrita em arquivos.

Diferente da linguagem C, a linguagem C++ utiliza os objetos cout e cin para exibir informações de saída e entrada para o usuário. O cout é usado para exibir informações na saída(stdout) de dados padrão e o cin para obter dados da entrada(stdin) padrão.

Em C++, o objeto cout tem a mesma função do print utilizado na linguagem C para exibição de dados para o usuário.

Sintaxe
cout << valor | expressao | variavel;
Exemplo 1
#include <iostream>
using namespace std;

int main()
{
    string texto = "C/C++";
    cout << texto;
    return 0;
}
Saída
C/C++

Diferente de print, cout não permite formatação de dados utilizando os conhecidos identificadores de formatação como %d,%s e etc. Apenas aceita os caracteres de escape.

Tab. 1: Caracteres de escape
Caractere Impressão/Descrição
\n Nova Linha
\' Apóstrofe
\" Aspas duplas
\\ Contrabarra
\t Tabulação horizontal
\a Alerta sonoro
\? Interrogação
\v Tabulação vertical
\e -
\f -
\nnn -
\uhhh -
\Uhhhhhhhh -
Exemplo 2
#include <iostream>
using namespace std;

int main()
{
    string texto = "C/C++";
    cout << "Saída:\n" << texto;
    return 0;
}
Saída
Saída:
C/C++

O exemplo acima, foi utilizado o caracter de escape \n para a quebra de linha. Porém, c++ fornece o comando endl que faz o mesmo papel.

Sintaxe
valor | expressao << endl;
Exemplo 3
#include <iostream>
using namespace std;
 
int main() 
{
    cout << 777 << endl;
    cout << 888 << endl;
}
Saída
777
888

O cout é um objeto da classe iostream definida pelo biblioteca <iostream> que já utilizamos em vários exemplos. Essa classe possui algums métodos para a manipulação dos dados de saída.

Tab. 2: Métodos cout
Metodo Descrição
put Escreve um caracter
write Escreve caracteres de um string
set Define formatação de saída
unsetf Defaz formatação de saída

O método put escreve um caracteres na saída de dados. Um caractere char, é recebido como argumento por esse método.

Sintaxe

cout.put(char ch);
Onde
ch: caractere que desejamos exibir
Exemplo 4
#include 
using namespace std;

int main()
{
    cout.put('C');
    cout.put('+');
    cout.put('+');

    return 0;
}
Saída
C++

Utilizando o método write, podemos escrever uma string na saída de dados padrão. Esse método recebe uma string como argumento bem como a quantidade de caracteres para escrever.

Sintaxe
cout.write(char[] str, int n);
Onde
str: string de desejamos imprimir
n: número de caracteres para imprimir
Exemplo 5
#include <iostream>
using namespace std;

int main()
{
    char str[] = "Uma string c++";
    cout.write(str,4);
    return 0;
}
Saída
Uma

O método setf é utilizado para configurar o cout em relação a justificação dos valores, notação científica e precisão.

Sintaxe
cout.setf(option);
Onde
option: left, right, fixed e scientific(notação científica)
Exemplo 6
#include <iostream>
using namespace std;

int main()
{
    cout << 1.99999 << " ";    
    cout.setf(ios::scientific);
    cout << 1.99999;
    
    return 0;
}
Saída
1.99999 1.999990e+00

O método unsetf desfaz as definições feitas pelo método setf como pode ser visto no exemplo abaixo:

Sintaxe
cout.unsetf(option);
Onde
option: left, right, fixed e scientific(notação científica)
Exemplo 7
#include <iostream>
using namespace std;

int main()
{
    cout.setf(ios::scientific);
    cout << 1.99999 <<endl;
    cout.unsetf(ios::scientific);
    cout << 1.99999;
    return 0;
}
Saída
1.999990e+00
1.99999

Para formatação básica para saída de dados, a linguagem C++ possui algumas funções nativas que nos ajudam. O uso é feito de acordo com a sintaxe abaixo:

Sintaxe
cout << flag_formatacao << valor;
Onde
flag_formatação:flag utilizada para formatação. 
flags mais comuns: left, right, fixed, showpos, boolalpha, nonboolalpha, dec, hex e oct.

Para formatação de valores numéricos inteiros usamos as flags de formatação dec,hex e oct para exibição de valores inteiros(base 10), hexadecimais(base 16) e octais(base 8).

Sintaxe
cout << dec << valor;
cout << hex << valor;
cout << oct << valor;
Exemplo 8
#include <iostream>
using namespace std;
 
int main() 
{
    cout << dec << 1 << std::endl;
    cout << oct << 10 << std::endl;
    cout << hex << 10 << std::endl;
}
Saída
10
12
a

Para valores sinalizados, podemos usar a flag showpos para exibição do caractere (+) antes de um valor.

Sintaxe
cout << showpos << valor << endl;
Exemplo 9
#include <iostream>
using namespace std;
 
int main() 
{
    cout << showpos << 10 << endl;
}
Saída
+10

Para formatação de valores booleanos, usamos as flags de formatação boolalpha e nonboolapha. A primeira flag formata um valor para ser exibido como true ou false. A segunda flag exibe um valor true ou false como 1 ou 0.

Sintaxe
cout << boolalpha << valor;
cout << nonboolalpha << valor;
Exemplo 10
#include <iostream>
using namespace std;
 
int main() 
{
    bool v = false;
    cout << boolalpha << v << std::endl;
    cout << noboolalpha << v << std::endl;
}
Saída
false
0

Para justificar valores à esquerda ou à direita, precisamos primeiro definir o tamanho do campos que valor irá ocupar utilizando o método width.

Sintaxe
void cout.width(t);
Onde
t: tamanho do campo que onde um valor será exibido.

Após essa definição utilizando o método width utilizamos as flags left e right para justificar um valor para exibição.

Sintaxe
cout << right << valor;
cout << left << valor;
Exemplo 11
#include <iostream>
using namespace std;
 
int main() 
{
    cout.width(8);
    cout << right << 1.99 << endl;
    cout.width(8);
    cout << left << 100 << "<- justificado à esquerda"; 
}
Saída
    1.99
100     <- justificado a esquerda

Para recuperarmos informações digitadas pelo usuário, utilizamos o comando cin que aguarda até que o usuário digite algum valor e aperte enter para encerrar a captura. O valor capturado então é atribuído à uma variável.

Sintaxe
cin >> variavel;
Exemplo 12
#include <iostream>
using namespace std;

int main()
{
    string texto = "C/C++";
    cout << "Nome Produto:\n";
    string nome1;
    cin >> nome1; //salva nome digitado
    cout << "Preço:\n";
    float preco;
    cin >> preco; //salva preço digitado
    cout<< "Produto:" << nome1 << " Preço:" << preco;
    return 0;}
Entrada
Tenis
1.99
Saída
Nome Produto:
Tenis
Preço:
1.99
Produto:Tenis Preço:1.99

Em uma futura seção será estudado a leitura de entrada de dados formatada utilizando string. Até lá, vamos utilizar apenas a forma básica de entrada de dados cin.

cin é um objeto da classe iostream definida pelo #include <iostream> que utilizamos em vários exemplos. Essa classe possui algums métodos para a manipulação da entrada de dados.

Tab. 3: Métodos cin
Metodo Descrição
get Lê um caractere
getline Lê uma string.
read Lê N bytes.
ignore Ignora N caracteres.
eof Verifica end-of-file.
fail -
clear Limpa flags
gcount -
rdbuf -
peek Retorna próximo caracter
putback -

As informações capturadas devem ser tratadas e/ou convertidas como nos exemplos vistos na seção em C++ : Casting-Conversão.

Com o método get do objeto cin podemos ler um caractere digitado pelo usuário do buffer de entrada padrão.

Sintaxe
int get();
basic_istream& get( char& <ch> );
basic_istream& get( char* s, std::streamsize count );
basic_istream& get( char* s, std::streamsize count, char <delim> );
basic_istream& get( basic_streambuf& strbuf );
basic_istream& get( basic_streambuf& strbuf, char delim );
Onde
s: string onde entrada é armazenada
count: número de caracteres para leitura
<delim>: delimitador para interromper leitura
Exemplo 13
#include <iostream>
using namespace std;

int main()
{
    char c = std::cin.get();
    std::cout << c;
}
Entrada
A(Enter)
Saída
A

Para leitura de um ou mais caracteres, usamos a versão ou sobrecarga do método get com os argumentos count e <delim>. Informamos a quantidade desejada de caracteres e um caractere para informar o fim da captura ou leitura.

Exemplo 14
#include <iostream>
using namespace std;

int main()
{
    char linha[10]; //buffer
    std::cin.get(linha,5,';'); //';' terminador
    std::cout << linha;
}
Entrada
Ola;(Enter)
Saída
Ola

O método getline lê uma linha digitada pelo usuário. Um buffer é utilizado para armazenar a linha digitada e um terminador de leitura também pode ser utilizado assim como visto no método get.

Sintaxe
istream& getline( char* s, std::streamsize <count> );
istream& getline( char* s, std::streamsize <count>, char delim );
Onde
s: string onde entrada é armazenada
<count>: número de caracteres para leitura
delim: delimitador para interromper leitura

No exemplo abaixo, definimos um buffer para armazenar uma string digitada pelo usuário. O tamanho da string é informado no argumento <count>. O argumento delim é definido como (;) para encerrar a leitura.

Exemplo 15
#include <iostream>
using namespace std;

int main()
{
    char linha[64]; //buffer
    std::cin.getline(linha,32,';'); //';' terminador
    std::cout << linha;
}
Entrada
uma string em C++;(Enter)
Saída
uma string em C++

O método ignore é utilizado para descartar caracteres do buffer de entrada. Usado para limpar "\n" do buffer deixado quando Enter é pressionada em uma entrada de dados anterior.

Sintaxe
cin.ignore(count, delimiter); 
Onde
count: quantos caracteres descartar
delimiter: caracter usado para parar descarte

Exemplo 17: sem ignore
#include <iostream>
#include <string>

using namespace std;

int main() 
{
    int num;

    cout << "digite um número:";
    cin >> num; // Enter adicionar '\n' no buffer
    string texto;
    cout << "digite um texto:";
    getline(cin, texto);

    cout << "Num: " << num << ", Texto: " << texto << endl;
    return 0;
}

Entrada
10
Saída
digite um numero:10
digite um texto:Num: 10, Texto: 

Como pode ser observado, sem o uso de ignore, o buffer ficou preenchido com uma quebra de linha que foi capturada pela função getline como entrada, fazendo com que a entrada do texto fosse interrompida abruptamente.

Exemplo 18: com ignore
#include <iostream>
#include <string>

using namespace std;

int main() 
{
    int num;

    cout << "digite um número:";
    cin >> num; // Enter adicionar '\n' no buffer

    //'limpar' buffer
    cin.ignore(1, '\n'); //

    string texto;
    cout << "digite um texto:";
    getline(cin, texto);

    cout << "Num: " << num << ", Texto: " << texto << endl;
    return 0;
}
Entrada
10
Saída
digite um numero:10
digite um texto:teste
Num: 10, Texto: teste

Esse método é usado para limpar as flags internas de erros de cin caso um valor inválido para captura seja informado pelo usuário fazendo com cin possa continuar sendo usado.

Usado quando um caractere é capturado como char, por exemplo. Deve ser usado em conjunto com o método ignore.

Sintaxe
cin.clear();
Onde
-

Exemplo 19: sem clear
#include <iostream>

using namespace std;

int main() 
{
    int num;
    cout << "digite um número: ";

    cin >> num; //informamos um caractere

   //erro interno gerado
   //cin inválido para uso

    cout << "digite outro numero: ";
    cin >> num;

    std::cout << "num: " << num<< "\n";
    return 0;
}
Entrada
abc
Saída
digite um número: abc
digite outro numero: num: 0
Exemplo 20: com clear
#include <iostream>
#include <string>

using namespace std;

int main() 
{
    int num;
    cout << "digite um número: ";
    cin >> num; //informamos um carácter

    cin.clear(); //limpamos as flags de erro
    cin.ignore(1, '\n'); //descarta \n

    //cin volta a funcionar
    cout << "digite outro numero: ";
    cin >> num;

    cout << "num: " << num<< "\n";
    
    return 0;
}
Entrada
a
10
Saída
digite um número: a
digite outro numero: v 10
num: 10

Esse método Peek retorna próximo caractere contido no buffer de entrada sem sua extração. Usado quando precisamos realizar alguma validação antes da extração ou captura.

Sintaxe
int cin.peek();
Onde
-

Exemplo 16
#include <iostream>
using namespace std;

int main() 
{
    cout << "digite uma letra e aperte Enter:";
    int peek = cin.peek(); 
    cout << "Peek: " << static_cast(peek) << "\n";

    char caracter;
    cin.get(caracter);
    
    cout << "char: " << caracter<< "\n";

}
Entrada
a
Saída
digite uma letra e aperte Enter:a
Peek: a
char: a
  1. 13/07/2026 - revisão 6 - Ajustes: pontuais
  2. 11/06/2026 - revisão 5 - Adição: métodos cin peek, ignore e clear
  3. 19/11/2025 - revisão 4 - Adição: métodos cin get e getline
  4. 28/07/2025 - revisão 3 - Ajustes em sintaxes; Correções pontuais
  5. 30/09/2024 - revisão 2 - Correção: método 'write', 'cin', Ajustes gramaticais pontuais e outros
  6. 09/02/2024 - revisão 1 - correção em navegação, exemplos e erros gramaticais
  7. 30/06/2023 - versão inicial