HOWTO · C++
Como esperar pela entrada do usuário em C++
Este artigo introduz métodos de como esperar pela entrada do usuário em C++
Nesta página
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 !