UFSM > Ciência da Computação

Primeiro Semestre de 2012
Professora: Juliana Kaizer Vizzotto

Entrada e Saída de Dados em C++

  1. Se você vai construir seus programas para a maratona de programação em C++, é recomendado que você use cin/cout para entrada/saída.

  2. Você deverá adicionar as seguintes bibliotecas:

    #include <iostream>
    #include <string>
    using namespace std;
    

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

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

  5. Você também pode utilizar `v = cin.get()`.

  6. Pode-se agrupar variáveis:

    cin >> v1 >> v2;
    
    onde v1 é lida antes de v2.

  7. Para testar fim de arquivo, usa-se `cin.eof()`, que retorna verdadeiro ou falso.

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

  9. Lendo linhas:
    1. `cin.getline(s,tam);`: lê uma linha excluindo o `\n`, descarta o `\n` e coloca o `\0` no final.
    2. `cin.get(s,tam);`: lê uma linha excluindo o `\n`, mantém o `\n` no buffer e coloca o `\0` no final.
    3. A variável `s` deve ser do tipo `string`.
    4. 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').
    5. 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.
    6. 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.
    7. `cin >> s` lê uma palavra pulando brancos iniciais.

  10. Testando o final da entrada:

      while (cin >> stuf){
       ...
    }
    

  11. Exemplos usando o `cout`:

    #include<iostream>
    #include<string>
    using namespace std;
    int main (){
      int number;
      string word;
      cin >> number >> word;
      cout << number << " " << word << endl;
    }
    

Página criada em: Seg Fev 27 15:00:00 BRT 2012. Última atualização em: Thu Mar 22 17:35:42 2012. Autoria: Juliana Kaizer Vizzotto.