ELC1096 - Preparação para a Maratona de Programação
Primeiro Semestre de 2012
Professora: Juliana Kaizer Vizzotto
Entrada e Saída de Dados em C++
- Se você vai construir seus programas para a maratona de programação em C++, é recomendado que você use cin/cout para entrada/saída.
- Você deverá adicionar as seguintes bibliotecas:
#include <iostream> #include <string> using namespace std;
- Em C++ usamos a stream
`cin`
(em`<iostream>`
). Em geral, utilizar o`cin`
é bem mais simples e enxuto, pois não precisamos dizer o tipo que estamos lendo. - Usando o
`cin`
para ler um item:cin >> v;
onde v é a variável a ser lida. O tipo da variável define como será a leitura. - Você também pode utilizar
`v = cin.get()`
. - Pode-se agrupar variáveis:
cin >> v1 >> v2;
onde v1 é lida antes de v2. - Para testar fim de arquivo, usa-se
`cin.eof()`
, que retorna verdadeiro ou falso. - Lendo caracteres:
c = cin.get(); cin.get(c); cin >> c;
onde`c`
é uma variável do tipo caractere. A expressão`cin.get()`
retorna um inteiro, sendo um cast do caractere lindo ou EOF (que é um`int`
, NULL = 0 = false) se fim de arquivo. Dessa forma, podemos usar`if(cin.get(c))`
, por exemplo. - Lendo linhas:
`cin.getline(s,tam);`
: lê uma linha excluindo o`\n`
, descarta o`\n`
e coloca o`\0`
no final.`cin.get(s,tam);`
: lê uma linha excluindo o`\n`
, mantém o`\n`
no buffer e coloca o`\0`
no final.- A variável
`s`
deve ser do tipo`string`
. - As chamadas
`cin.getline`
e`cin.get`
recebem como parâmetro o destino da linha e o tamanho máximo que ela pode ter menos 1 (reservado para o '\0'). - Pode-se também, por exemplo, usar ```cin.getline(s,10000,'$') para ler a entrada até chegar a um caractere '$', descartando-0, ou até ler 10000 caracteres, o que acontecer primeiro.
- Manter o '\n' no buffer como faz o
`cin.get(s,tam,'\n')`
normalmente é ruim, pois uma chamada seguinte do tipo`cin.get(c)`
lerá o '\n' deixado no buffer, e não o primeiro caractere da linha seguinte. Dessa forma é recomendável utilizar`cin.getline`
nas competições de programação. `cin >> s`
lê uma palavra pulando brancos iniciais.
- Testando o final da entrada:
while (cin >> stuf){ ... }
- Exemplos usando o
`cout`
:#include<iostream> #include<string> using namespace std; int main (){ int number; string word; cin >> number >> word; cout << number << " " << word << endl; }