2017-09-27 14 views
0
char input_Handler(int& error,int user,const char satir[]){ 
    string cheyeni; 
    int error_string = 0; 
    char che; 
    char test; 

    cout << "Please enter your move with keyboard letters such as 'A' or 'a'\n"; 
    //cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
    //cin.ignore(); 
    // 
    cin.ignore(); 
    getline(cin,cheyeni); 
........rest is not here 

J'ai cette fonction qui gère les entrées pour mon jeu. Cette fonction est appelée plusieurs fois dans le jeu. En premier appel, il gère correctement les entrées. D'après ma recherche sur le Web, les gens disent toujours que getline n'attribue pas de nouvelle ligne quand j'appuie sur Entrée, donc quand je l'appelle à nouveau, je ne reçois pas d'entrée de moi mais plutôt '\ n' à ma chaîne (cheyeni) automatiquement.C++ getline est sauté après le premier appel

Je n'arrive pas à résoudre ce problème, j'ai essayé plusieurs choses cin.sync(), cin.ignore(). Alors que vous pouvez penser que je l'ai utilisé à tort, j'ai essayé beaucoup de façons avant de getline après getline etc .. Mais je pourrais/je me trompe probablement sur quelque chose. Je ne peux pas sembler bien voir où est la partie qui me manque.

Utilisateur censé entrer une chaîne ou une lettre.

+0

Pour clarifier, quand je déboguer mon programme, sur le deuxième appel de la fonction, il veut que vous obtenez l'entrée, mais pas quand getline() appelé, juste avant qu'il ne soit appelé/devrait être appelé . Ensuite, après avoir assigné l'entrée, il continue à diffuser mais il n'attribue pas mon entrée cin à la chaîne. – opricnik

+2

Eh bien, vous avez apparemment une nouvelle ligne restante dans le tampon d'entrée, et appelant 'ignore' devrait le supprimer. Si cela ne semble pas fonctionner alors peut-être vous avez * plusieurs * nouvelles lignes dans le tampon d'entrée? Pouvez-vous s'il vous plaît essayer de créer un [exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve) pour que nous puissions voir, et * nous * montrer * l'entrée que vous donnez au programme? –

+0

@DragonRock Il obtient une erreur de segmentation. – opricnik

Répondre

1

Placez votre cin.ignore() ci-dessous getline()

getline(cin,cheyeni); 
cin.ignore();