2010-12-08 40 views
5

Est-il possible de changer le texte imprimé avec "cout"? Je voudrais montrer le pourcentage actuel de quelque chose sans avoir besoin d'avoir une nouvelle ligne pour chaque pourcentage. Est-ce possible?C++ Changer la sortie de "cout"

+0

cout n'est pas supposé être un abstracton d'une console, bien que la plupart des terminaux interpréteront volontiers le caractère de retour chariot correctement. – lijie

+0

ce qui est pour la console alors? – nebkat

+0

vous devez clarifier votre question, ce n'est pas clair ce que vous essayez d'atteindre et ce que signifie «changement». –

Répondre

11

Cela fonctionne pour moi:

std::cout << "1111"; 
std::cout << "\r"; 
std::cout << "2222"; 

\r est un symbole de retour chariot. Met le "curseur" de retour au début de la ligne. Vous pouvez également utiliser \b. C'est un retour arrière. Une fois imprimé, il retourne un caractère.

+0

Vous avez 3 '\ r' (retour chariot) plus que nécessaire (sauf si vous vouliez dire' \ b', retour arrière) – Hasturkun

+0

Merci, j'ai déjà édité cela. – detunized

+0

Le symbole de fin de ligne approprié est "\ n" et non "\ r". La bibliothèque standard interprétera "\ n" comme CR-LF, LF-CR ou tout ce qui est approprié pour votre plate-forme. Il y a aussi std :: endl, qui force le rinçage du buffer. –

1

En général, ce n'est pas possible. (Imaginez que la sortie de cout est envoyée directement à une imprimante Comment voulez-vous lui demander de "désimprimer" la dernière ligne?) cout est un flux de sortie, il ne fait aucune hypothèse sur le support auquel la sortie est envoyée, ou sur le capacités de ce média. Des trucs spécifiques peuvent atteindre ce que vous voulez dans certains cas, mais échoueront horriblement dans d'autres. Si vous voulez quelque chose de plus dynamique que la sortie directe du texte brut, peut-être cout n'est pas le bon outil à utiliser.

0

Une chose que vous n'obtiendrez certainement pas de cout est la longueur de la ligne terminale. Comme cela peut être changé, vous pouvez utiliser des lignes trop longues, ce qui (en utilisant '\ r') entraînera l'impression de nouvelles lignes à chaque mise à jour. Si vous souhaitez utiliser une plate-forme spécifique, utilisez des fonctions spécifiques à la plate-forme pour obtenir la taille du terminal (attention, vous n'êtes peut-être pas du tout connecté à un terminal, par exemple, redirigé vers un fichier).