Entrada e Saída
Troca de informações entre programa e usuário.
Troca de dados
Programas podem permitir que usuários insiram informações, como nome de usuário, senha e cliques. Além disso, programas podem exibir informações, como sons, imagens e vídeos.
São chamadas de
- Entrada: informações que o usuário fornece ao programa.
- Saída: informações que o programa fornece ao usuário.
Entrada e saída padrão
A entrada e saída padrão de um programa em C++ são, respectivamente, o arquivo de onde o programa obtém entradas e o arquivo onde o programa escreve suas saídas por padrão. São eles o stdin e o stdout.
Ambos estão, por padrão, associados ao terminal onde o programa for executado, isto é: o que for escrito no terminal é escrito na entrada padrão, e o que for escrito na saída padrão pode ser escrito no terminal e exibido ao usuário.
Entrada
O comando cin
solicita uma escrita na entrada padrão e o direciona para uma variável através do operador >>
.
int numero;
cin >> numero; // o que for lido da entrada padrão é armazenado em numero
````
O `cin` interpreta que espaços em branco, isto é, quebras de linha e espaços, separam duas entradas diferentes. Portanto, entradas lidas com o `cin` não devem conter espaços, pois serão interpretadas como duas entradas diferentes.
Para cada variável lida pelo `cin`:
1. será checado se há conteúdo em `stdin`.
1. se não houver, realiza uma leitura no terminal e escreve em `stdin`.
2. remove a primeira entrada de stdin e a armazena na variável.
Pode-se encadear `>>`'s para a obtenção de diversas entradas. Os dois códigos a seguir funcionam de maneira idêntica.
```cpp
int num1, num2, num3;
cin >> num1 >> num2 >> num3;
Caso o cin
tente armazenar um valor em uma variável de tipo incompatível, ele entra em um estado de erro e quaisquer leituras dali em diante serão ignoradas.
Saída
O comando cout
escreve na saída padrão e recebe valores através do operador <<
:
Também é possível escrever o valor de variáveis.
Pode-se encadear <<
's para escrever diversas saídas. Os comandos a seguir funcionam de maneira idêntica.
Quebras de linha
Quebras de linha podem ser atingidas de duas maneiras: o caractere \n
e o manipulador endl
. Os comandos abaixo escrevem o mesmo conteúdo à saída padrão:
A diferença entre os dois métodos está em um processo que chamamos de flush.
O cout
escreve as informações na saída padrão, isto é, no arquivo stdout
. A escrita das informações que estão em stdout
para o terminal é o que chamamos de flush.
O caractere \n
apenas escreve uma quebra de linha em stdout
. Já o endl
, além de escrever a quebra de linha, realiza um flush.
O processo de flush é bem lento e deve ser realizado apenas quando necessário. Ele é realizado quando:
- um
endl
é passado aocout
. - o programa finaliza.
- um
cin
está prestes a realizar uma leitura. - outras maneiras de invocar um flush explicitamente são utilizadas.
Precisão de números decimais
Pode-se decidir o número de casas decimais de um número a ser impresso com os seguintes manipuladores: