Como esperar pela entrada do usuário em C++
- 
          
            Utilize cin.get()Método para aguardar a entrada do usuário
- 
          
            Utilize a função getcharpara aguardar a entrada do usuário
- 
          
            Utilize a função getcpara aguardar a entrada do usuário
- 
          
            Evite utilizar o system("pause")para aguardar a entrada do usuário
 
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 !
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