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