2010-10-08 4 views
0

Je veux écrire une application de console C++/c simple, pour montrer mon processus 1% 2%. pour l'instant, j'imprimer ligne par ligne commeMise à jour et plusieurs fenêtres de console

finished 1% 
finished 2% 

et etc

Comment puis-je mettre à jour tout pourcentage x% sans l'impression d'une nouvelle ligne?

En outre, je veux ouvrir deux fenêtres de la console un montrent les messages un montrent le processus comme ci-dessus. Comment puis-je ouvrir une autre fenêtre de console?

Répondre

2

Sur la plupart des terminaux, vous pouvez imprimer le retour chariot ASCII '\ r' (valeur 13 décimale) pour renvoyer le curseur à gauche de la ligne en cours, ce qui vous permet d'écraser la valeur précédente. Ou, vous pouvez envoyer des backspaces ('\ b', ASCII 8) pour déplacer un seul caractère vers la gauche. Aucun ne supprimera automatiquement le contenu déjà affiché, mais vous pouvez toujours remplacer tout ce que vous ne voulez plus voir avec certains espaces. Alternativement, vous pouvez utiliser des codes de contrôle supportés par votre console particulière (par exemple vt100, vt220 ...), qui auront probablement des fonctionnalités plus avancées telles que "clear-to-end-of-line". De nombreuses bibliothèques sont disponibles pour détecter le type de terminal et utiliser les codes qu'il prend en charge, ou synthétiser des opérations avancées à partir de nombreuses autres si nécessaire: sous Linux et UNIX, la bibliothèque ncurses est un bon choix.

C++ n'a pas de concept de fenêtre de console. L'ouverture d'une seconde fenêtre dépend beaucoup du système d'exploitation que vous utilisez, et peut-être de la bibliothèque graphique, que vous n'avez pas spécifiée. Sur n'importe quel système d'exploitation, vous pouvez demander à votre application d'écrire des messages dans un fichier, puis d'inspecter ce fichier à partir d'une autre fenêtre que vous ouvrez vous-même. Sous Linux/UNIX, l'utilitaire "less" est idéal pour inspecter les fichiers journaux - en plus de vous montrer le contenu au moment où vous avez moins utilisé, vous pouvez lui demander de "suivre" les nouvelles données telles qu'elles sont écrites dans le fichier.

+0

J'utilise Windows 7 64 bits – Nissan911

+0

Hmmm ... un peu compliqué car - pour autant que je sache - Windows offre un bon utilitaire pour afficher le contenu croissant des fichiers depuis la console. Vous pouvez écrire un programme vous-même pour lire un fichier de message, puis démarrer ce programme à partir de votre programme mani. Si cela vous est utile, vous pouvez transmettre le nom du fichier au second programme de visualisation en tant qu'argument de la ligne de commande ala 'system (" view c: \ tmp \ messages.txt ")'. –

0

Vous pouvez mettre à jour votre message d'avancement de plusieurs manières. Vous pouvez imprimer des caractères de retour arrière pour déplacer le curseur vers la gauche, puis écraser l'ancienne sortie. Si votre console prend en charge les séquences d'échappement ANSI, vous pouvez utiliser une séquence d'échappement pour effacer la ligne et la redessiner.

La meilleure technique à utiliser dépendra probablement de la console que vous utilisez (différentes consoles supportent différentes choses). Quelle plate-forme utilisez-vous, et quelle console?

1

Sur Windows, vous pouvez déplacer le curseur sur un emplacement de l'écran, puis lancer l'impression à partir de là:

COORD c; 
c.X = x; c.Y = y; 
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c); 

Bien sûr, vous devez inclure windows.h

0

Il semble que vous » re parle des applications de la console Windows. Chaque processus Windows est associé à au plus une fenêtre de console.

Si vous voulez deux fenêtres de console, alors vous pouvez lancer un autre processus et une sortie de tuyau, ou communiquer avec lui via des sockets ou des "mailslots" Windows ou autre.

Questions connexes