Pergunta

Estou lendo entrada em um programa C ++. Primeiro alguns inteiros, então uma string. Quando eu tento ler a corda com getline(cin,stringname);, ele não lê a linha que o usuário digita: em vez disso, eu recebo uma linha vazia, a partir de quando o usuário pressionou Enter depois de digitar os números inteiros

cin>>track.day; //Int
cin>>track.seriesday; //Int
getline(cin,track.comment); //String

Como posso limpar o cin (cin.clear() não trabalho) para que a cadeia não vai encher-se com a tecla "enter"?

É um receptor de entrada normal, nada de especial no topo do código, Eu tive um problema como este, mas eu esqueci a solução Eu preciso limpar a alguma forma cin assim que a corda não vai ficar cheio de tecla "enter".

Foi útil?

Solução

Eu acho que o seu cin dos ints não está lendo a nova linha antes da sentença. cin ignora os espaços em branco e pára a leitura de um número quando ele encontra um não-dígitos, incluindo espaços em branco.

Assim:

std::cin >> num1;
std::cin >> num2;
std::cin.ignore(INT_MAX, '\n'); // ignore the new line which follows num2
std::getline(std::cin, sentence);

trabalho poder para você

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top