Melhor resposta
cin.getline () permite que você insira uma string que tem espaços em branco também. Sua sintaxe é a seguinte: cin.getline (nome da string, tamanho da string); Considere o seguinte exemplo: Suponha que eu insira Hello World para str e strr. #include
int main()
{
char str[100]", strr[100];
cout<<"Enter the strings : ";
cin.getline( str, 100 ); //enter Hello World
cin>>strr; //enter Hello Word.
cout<
cout<
return 0;
}
Esta é a diferença básica. cin não leva em consideração os espaços em branco na string, enquanto cin.getline considera.
Resposta
Este é um dos problemas mais comuns que os alunos geralmente enfrentam ao usar getline () função.
No momento em que executa o programa, você digita Delhi e pressiona a tecla Enter. Essa chave de entrada nada mais é do que o caractere de nova linha. Caracteres de espaço em branco, como espaço de tabulação e \ n, são normalmente ignorados (pulados) ao inserir o valor usando cin.
Normalmente, caracteres extras são deixados no fluxo de entrada após a entrada ser supostamente concluído. Eles são então repassados para a próxima operação de entrada, mesmo que não sejam destinados a isso. Freqüentemente, é um caractere de nova linha que permanece para trás, mas às vezes outros caracteres também são deixados.
Em seu programa, este caractere de nova linha serve como entrada para a função getline (). Uma vez que esta função tem sua entrada, ela não permite que você insira o valor. Você precisa se livrar deste caractere e então seu programa funcionará perfeitamente bem.
Para se livrar desses caracteres estranhos, o ignore (MAX, DELIM) a função de membro da classe istream é usada. Ele lê e joga fora até MAX caracteres, incluindo o caractere delimitador especificado. Use esta função antes de chamar a função getline () como:
cin.ignore (1, "\ n");
Visto que os caracteres extras também podem incluir espaço em branco (por exemplo, depois de digitar Delhi , você coloca um pouco de espaço e pressiona a tecla Enter), em vez de 1, seria mais seguro usar 10.
cin.ignore (10, "\ n");
Não se preocupe com a classe istream. Ela é declarada no arquivo de cabeçalho IOSTREAM. Além disso , getline () também é uma função membro da própria classe istream.