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
getchar
para aguardar a entrada do usuário -
Utilize a função
getc
para 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