Como esperar pela entrada do usuário em C++

Jinku Hu 12 outubro 2023
  1. Utilize cin.get() Método para aguardar a entrada do usuário
  2. Utilize a função getchar para aguardar a entrada do usuário
  3. Utilize a função getc para aguardar a entrada do usuário
  4. Evite utilizar o system("pause") para aguardar a entrada do usuário
Como esperar pela entrada do usuário em C++

Este artigo apresentará os métodos C++ para aguardar a entrada do usuário. Note que o seguinte tutorial assume que o conteúdo de entrada do usuário é irrelevante para a execução do programa.

Utilize cin.get() Método para aguardar a entrada do usuário

get() é std:cin função de membro, que funciona quase como um >> operador de entrada que extrai caráter(es) do fluxo. Neste caso, quando não estamos interessados em processar a entrada do usuário e só precisamos implementar a funcionalidade wait, podemos chamar a função get sem nenhum argumento. Observe, no entanto, que esta função retorna quando a tecla Enter é pressionada.

#include <iostream>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<char> arr = {'w', 'x', 'y', 'z'};
  int flag;

  flag = cin.get();

  for (auto const& value : arr) cout << value << "; ";
  cout << "\nDone !" << endl;

  return EXIT_SUCCESS;
}

Resultado:

w; x; y; z;
Done !

Utilize a função getchar para aguardar a entrada do usuário

A função getchar é a função da biblioteca padrão C para a leitura de um único caractere do fluxo de entrada (stdin). Como o anterior, este método espera o retorno de um novo caractere de linha (ou seja, a tecla Enter a ser pressionada). O getchar retorna eof por erro ou quando o final do fluxo é encontrado.

#include <iostream>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<char> arr = {'w', 'x', 'y', 'z'};
  int flag;

  flag = getchar();

  for (auto const& value : arr) cout << value << "; ";
  cout << "\nDone !" << endl;

  return EXIT_SUCCESS;
}

Utilize a função getc para aguardar a entrada do usuário

Como alternativa, poderíamos substituir o exemplo acima com a função getc. O getc é passado o argumento FILE *stream para leitura de qualquer fluxo de entrada, mas neste caso, estamos passando o stdin, que é um fluxo de entrada padrão comumente associado à entrada do terminal. Esta função também retorna quando a tecla Enter é pressionada.

#include <iostream>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<char> arr = {'w', 'x', 'y', 'z'};
  int flag;

  flag = getchar();

  for (auto const& value : arr) cout << value << "; ";
  cout << "\nDone !" << endl;

  return EXIT_SUCCESS;
}

Evite utilizar o system("pause") para aguardar a entrada do usuário

A função system é utilizada para executar comandos shell e o nome do comando é passado como uma string literal. Assim, se um pause é passado como argumento, ele tenta executar o comando correspondente, que só está disponível em plataformas Windows. É melhor implementar uma função de espera personalizada com os métodos listados acima do que utilizar uma forma não-portátil de system("pause").

#include <iostream>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<char> arr = {'w', 'x', 'y', 'z'};
  int flag;

  system("pause");

  for (auto const& value : arr) cout << value << "; ";
  cout << "\nDone !" << endl;

  return EXIT_SUCCESS;
}

Resultado:

sh: 1: pause: not found
w; x; y; z;
Done !
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook