O que cin.getline faz em C ++?


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 using namespace std;

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.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *