2017-10-13 11 views
0

Je suis en train d'essayer CLion pour écrire des programmes C++ de base mais chaque fois que j'introduis une entrée en utilisant std::cin ou std::getline l'entrée est imprimée sur la console sans raison.CLion imprime automatiquement l'entrée à partir de l'entrée standard, y a-t-il une solution?

Par exemple, si je lance ce programme

#include <iostream> 
#include <string> 

int main(){ 
    string name; 
    std::cin >> name; 
    std::cout << name << std::endl; 
    return 0; 
} 

et tapez thomas et appuyez sur Entrée, je reçois cette sortie

thomas 
thomas 
thomas 

quand, au lieu que je devrais obtenir juste

thomas 
thomas 

Je suis en utilisant CLion/Mingw64 sur Windows 10 x64

+0

Vous entrez 'thomas' et appuyez sur Entrée. Cela signifie qu'au moins un sera affiché. En voyez-vous un de plus ou deux de plus (pour un total de trois)? – NathanOliver

+0

Ouais désolé, édité la question, ma faute, fondamentalement, je vois le thomas que j'ai écrit, celui qui est imprimé par cout, mais je ne peux pas comprendre d'où vient le troisième –

+0

Okay. Merci de clarifier. – NathanOliver

Répondre

3

Il n'y a rien de mal avec votre code.

Ce que vous observez est un effet secondaire de l'utilisation de WinPTY sous le capot. Par défaut, CLion l'utilise pour communiquer avec un programme débogué sous Windows.

Voici le bogue correspondant dans notre question tracker: CPP-2580 User input appears twice in output window in CLion under MinGW, n'hésitez pas à infléchir le ticket.

Bien qu'il n'y ait pas de solution appropriée pour la question encore, vous pouvez utiliser une solution de contournement proposée dans les commentaires à ce billet pour désactiver PTY:

Ouvrir le registre par action Rechercher, tapez run.processes.with.pty et désactiver cette pty réglage.