2017-09-04 2 views
0

A pris l'exemple de here.std :: cin.getline n'attend pas Entrée

pertinentes du Code:

char line[chat_message::max_body_length + 1]; 

    while (std::cin.getline(line, chat_message::max_body_length + 1)) 
    { 
     chat_message msg; 
     msg.body_length(std::strlen(line)); 
     std::memcpy(msg.body(), line, msg.body_length()); 
     msg.encode_header(); 
     c.write(msg); 
    } 

    c.close(); 
    t.join(); 

L'application quitte instantanément sans me attendre de mettre un message de chat dans J'ai fait aucune modification du code attendre en utilisant un ordinateur Windows au lieu d'une application console (je suis toujours. connexion d'une console avec Alloc & AttachConsole)

Répondre

0

En résumé, votre std::cin istream n'est pas valide. std::cin.getline renvoie une référence à un std::istream, ce qui représente std::cin. En repassant l'héritage hiearchy, , dont std::cin dérive, a une surcharge operator bool qui retournera false si le badbit ou errorbit sur votre flux a été défini.

Je parie que votre console, n'étant pas configurée de manière traditionnelle, n'est pas correctement attachée à .