frases em char/string [RESOLVIDO]

1. frases em char/string [RESOLVIDO]

Douglas Santos
douglive

(usa Ubuntu)

Enviado em 09/02/2014 - 00:19h

o galera, blz? estou com uma dúvida pertinente: estou precisando armazenar um nome completo em uma string, segue exemplo, considerando que a entrada seja por exemplo: "Marcelo Faria"

string nome;
cout<<"Insira uma entrada";
cin>>nome;

bem quando tento fazer essa operação dá erro, procurando resposta, encontrei getline(cin, string),então fiz o seguinte:

string nome;
cout<<"Insira uma entrada";
getline(cin, nome);


entretanto a quando chega nessa parte o copilador avança pra próxima linha não permitindo que dê a entrada, então tentei realizar com char, mas a função anterior é só pra string, e para char usaria gets(arraydechar), usei é continuou o erro. se alguém poder me ajudar, já agradeço.


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 09/02/2014 - 05:17h

Se antes de ler a linha com cin.getline() você tinha feito algo como cin >> variavel_inteira, na hora em que o programa rodar, ao ler o inteiro o operador >> só aproveita os algarismos e deixa quaisquer outros caracteres, incluindo espaços em branco e o sinalizado de fim de linha, no buffer de leitura. Nesse caso, o cin.getline() que vem a seguir lê os eventuais caracteres que sobrarem no buffer, até a marca de fim de linha correspondente ao ENTER que você provavelmente digitou logo após o número e antes do nome que gostaria que fosse lido.

Há várias formas de corrigir o programa para contornar o problema. Uma delas é usar istream::ignore() (procure a referência no cplusplus.com).

3. Re: frases em char/string [RESOLVIDO]

Douglas Santos
douglive

(usa Ubuntu)

Enviado em 09/02/2014 - 06:25h

paulo1205 escreveu:

Se antes de ler a linha com cin.getline() você tinha feito algo como cin >> variavel_inteira, na hora em que o programa rodar, ao ler o inteiro o operador >> só aproveita os algarismos e deixa quaisquer outros caracteres, incluindo espaços em branco e o sinalizado de fim de linha, no buffer de leitura. Nesse caso, o cin.getline() que vem a seguir lê os eventuais caracteres que sobrarem no buffer, até a marca de fim de linha correspondente ao ENTER que você provavelmente digitou logo após o número e antes do nome que gostaria que fosse lido.

Há várias formas de corrigir o programa para contornar o problema. Uma delas é usar istream::ignore() (procure a referência no cplusplus.com).


era isso mesmo, problema resolvido, obrigado








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts