Bonne journée,automatique Cout rinçage
J'ai écrit un programme Java qui démarre plusieurs programmes écrits en C++ en utilisant l'objet de processus et appels de fonction Runtime.exec(). Les programmes C++ utilisent cout et cin pour leur entrée et leur sortie. Le programme Java envoie des informations et lit des informations à partir du flux d'entrée des programmes C++ et du flux de sortie. J'ai alors un tampon de chaîne qui construit ce à quoi ressemblerait une interaction typique du programme en ajoutant au tampon de chaîne l'entrée et la sortie du programme C++. Le problème est que tous les appels d'entrée sont ajoutés et tous les appels de sortie sont affichés. Par exemple, et par exemple de la StringBuffer peut-être quelque chose comme ça ...
2
3
Please enter two numbers to add. Your result is 5
lorsque le programme ressemblerait à ceci sur une console standard
Please enter two numbers to add. 2
3
Your result is 5
Le problème est que je reçois l'ordre de l'entrée et de la sortie toutes en wack car à moins que le programme C++ n'appelle la fonction cout.flush(), la sortie ne soit pas écrite avant que l'entrée ne soit donnée.
Existe-t-il un moyen de vider automatiquement le tampon pour que le programme C++ n'ait pas à s'inquiéter de l'appel de cout.flush()? Similaire à comme si le programme C++ était un programme autonome interagissant avec la console de commande, le programmeur n'a pas toujours besoin du cout.flush(), la console de commande sort toujours les données avant l'entrée.
Merci,
S'il s'agit d'un programme interactif, il est bon de le vider manuellement de toute façon. 'std :: cout <<" S'il vous plaît entrer deux nombres à ajouter. "<< std :: flush' – cdhowie
Si le Java envoie les données, je ne pense pas que cela soit théoriquement résoluble dans le cas général, notez que vous pouvez faire la même chose à partir d'un fichier batch: 'echo 2 & echo 3 & myprogram.exe <<<" 2 \ n3' et il semblerait tout de même.Le problème ici n'a rien à voir avec le rinçage ou le tamponnage. –