Lendo alguns inteiros, em seguida, uma linha de texto em C ++
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".
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ê