J'ai ce code: mais la sortie ne vient pas comme je m'attendais. Au lieu de: p> ceci sort: p> Quel est le problème? Je mets 'std :: ios :: gauche' mais cela ne fait aucune différence? P> p>
5 Réponses :
Vous devez effacer la valeur précédente dans Réglfield avant de pouvoir définir un nouveau.
Essayez ceci: P>
#include <iostream>
#include <iomanip>
int main () {
std::cout << std::resetiosflags(std::ios::adjustfield);
std::cout << std::setiosflags(std::ios::right);
std::cout << std::setw(3) << 1 << std::setw(3) << 2 << '\n';
std::cout << std::resetiosflags(std::ios::adjustfield);
std::cout << std::setiosflags(std::ios::left);
std::cout << std::setw(3) << 1 << std::setw(3) << 2 << '\n';
}
Sauf si vous vous sentez masochiste, utilisez simplement:
// right justify by default. cout << setw(3) << 1 << setw(3) << 2 << '\n'; // left justify cout << std::left << setw(3) << 1 << setw(3) << 2 << '\n'; // right justify again. cout << std::right << setw(3) << 1 << setw(3) << 2 << '\n';
Votre code veut un std :: resetiosflags (std :: ios :: droite) code> envoyé au flux de sortie pour annuler la précédente std :: Sétiosflags (std :: ios :: à droite) code>. p>
On dirait que les deux laissés code> et droit code> drapeaux sont définis, celui qui a été défini d'abord prime la priorité. Si je réinitialise explicitement droit code> drapeau avant de régler gauche code>, je reçois la sortie que vous attendiez:
Utilisez SETF avec un masque (pas besoin de resetiosFlags)