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. Aprender a 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 informações da entrada(stdin) padrão de dados.

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 escreve.

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. 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 sequência de caracteres ou string.
read Lê N bytes.
ignore Ignora N caracteres.
eof Verifica end-of-file.
fail -
clear -
gcount -
rdbuf -
peek -
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++
  1. 19/11/2025 - revisão 4 - Adição: métodos cin get e getline
  2. 28/07/2025 - revisão 3 - Ajustes em sintaxes; Correções pontuais
  3. 30/09/2024 - revisão 2 - Correção: método 'write', 'cin', Ajustes gramaticais pontuais e outros
  4. 09/02/2024 - revisão 1 - correção em navegação, exemplos e erros gramaticais
  5. 30/06/2023 - versão inicial