Erro entre funçao e cin.getline ?? C++

boas !!
tenho estado a aprender c++ atraves de uns toturials na net mas agr encravei numa parte ...
vejam:

#include <iostream>
#include <stdlib.h>
#include <windows.h>
#include <fstream>
using namespace std;

ifstream doc_in("perfil.txt");
ofstream doc_out("perfil.txt");

//Perfil Jogo1
int menuj1;
char load [150];
char perfil [100];
char highscores [100];

int main ()
{}

void menu()
{}
void J1()
{do{
cout << endl;
cout << "Adivinha o Numero:" << endl << endl;
cout << "1. Jogo Rapido" << endl;
cout << "2. Novo Perfil" << endl;
cout << "3. Carregar Perfil" << endl;
cout << "4. Melhores Pontuacoes" << endl;
cout << "5. <-" <<endl;
cin >> menuj1;
cout << endl;

switch(menuj1)
{
case 1:
J1Dif();
break;

case 2:
cout << "Da um nome ao teu perfil" << endl;
cin.getline(load, 150);
doc_out << load << endl;
cout << "O perfil foi criado com sucesso, escolhe a dificuldade a que desejas jogar" << endl;
J1Dif();

break;

case 3:
break;
case 4:
break;

case 5:
menu();
break;
}
}
while(menuj1<1 || menuj1>4 );
}
void J1Dif ()
{}


supostamente devia escrever o nome que o jogador pretendia para um ficheiro .txt .. certo?
o que acontece e que ignora totalmente a parte cin.getline e segue em frente.

mas se eu puser tudo igual na funcao main ou substituir cin.getline por cin<<... ja da ...

alguem me pode explicar porque nao da assim ?
 
Última edição:
Pode ser que quando les alguma das outras opçoes fique um \n por ler, e depois mal fazes readline (ler ate aparecer um \n) ele salta logo. Tenta fazer um flush do cin ou verificar se lês realmente tudo de cada vez.
 
Boas

A seguir ao cin >> menu1j; acrescenta cin.get(), porque ao fazeres getline sem o cin.get() apenas estás a ler o enter que tiveste que primir para ler o que introduziste no cin.

Cumps
 
Back
Topo