0

Estou iniciando em C++, durante alguns testes notei que após a segunda iteração do while o comando cin.getline não era lido exibindo a linha após ele. Não entendo oq ocorre. Segue o código:

#include <iostream>
#include <fstream>
#include <string>
#include <cctype>

using namespace std;

int main(void) {
    char matter[20] = " ";
    string category(" ");
    ofstream write;
    bool control = true;
    char op = ' ';

    while (control) {
        cout << "Enter matter: ";
        cin.getline(matter, 20);//--------
        write.open("database.txt" , ofstream::app);
        write << "->" << matter << "\n";
        write.close();
        cout << "Prosseguir?[Y/N]:  ";
        cin >> op;
        op = toupper(op);
        if (op == 'N') {
          return 0;
        }
    }
}

Se alguém souber oq é...

1 Resposta 1

0

A solução é bem simples, apenas coloque cin.ignore(); antes do if.

veja funcioanndo

Leia o artigo: C++: Usando o cin.ignore()

inclusive já tive este mesmo problema no passado Posso utilizar "cin" e "getline" no mesmo código? Veja um pouco da discussão do tópico para entender ainda mais!

Você deve fazer log-in para responder a esta pergunta.

Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag .