web-dev-qa-db-fra.com

Entrée standard CLion lors du débogage

Ce que j'essaie de faire, c'est essentiellement:

./myProgram < myData.txt

Pendant que je débogue avec CLion IDE. Je ne trouve tout simplement pas l'option de le faire.

A similaire question - mais spécifique au produit pour MSVS

25
user5414301

J'ai eu le même problème et il semble que CLion ne gère pas encore les entrées standard.

J'ai contourné ce problème en modifiant le flux d'entrée avant d'exécuter mon programme.

Par exemple, si vous voulez entrer un flux de fichiers dans votre stdin, vous pouvez écrire dans votre main:

std::ifstream in("ABSOLUTE_PATH_TO_YOUR_FILE");
std::cin.rdbuf(in.rdbuf());

Ensuite, vous pouvez trouver un moyen de basculer ce changement de flux lorsque vous le souhaitez. Notez que pour les fichiers, vous devrez fournir un chemin absolu car l'application est exécutée à partir d'un répertoire différent du répertoire actuel.

J'espère que cela peut aider jusqu'à ce que CLion fournisse une vraie solution.

22
Arnaud Bertrand

En supposant que votre fichier d'entrée est myData.txt, Vous pouvez rouvrir/réutiliser le flux stdin en utilisant freopen

freopen("myData.txt","r",stdin);

si vous voulez faire de même avec votre sortie:

freopen("myOutput.txt","w",stdout);

cela fonctionnera pour std :: cin, printf, etc ...

Vous pouvez trouver plus d'informations à ce sujet ici: http://www.cplusplus.com/reference/cstdio/freopen/


Soit dit en passant, il existe déjà une demande de fonctionnalité pour cela. Si vous êtes intéressé, vous pouvez voter ici afin qu'il soit prioritaire: https://youtrack.jetbrains.com/issue/CPP-315

10
Juan Leni