Question

Après avoir obtenu une réponse utile , je en cours encore un autre problème: l'affichage de deux ou plusieurs chaînes dans la colonne que je veux qu'il soit affiché dans pour un exemple du problème que je l'ai, je veux cette sortie.

Come here! where?             not here!

mais obtenir

Come here!                     where? not here!

quand j'utilise le code

cout << left << setw(30) << "Come here!" << " where? " << setw(20) << "not here!" << endl;

Je me suis assuré (je pense) que la largeur des deux colonnes pourrait contenir les deux chaînes, mais peu importe la taille que je régler la largeur des colonnes à l'erreur est toujours là.

Était-ce utile?

La solution

Comme indiqué, setw() applique uniquement à l'entrée suivante, et que vous essayez de l'appliquer à deux entrées.

Une alternative aux autres suggestions qui vous donne la possibilité d'utiliser des variables en place des constantes littérales:

#include <iostream>
#include <sstream>
#include <iomanip>
using namespace std;

int main()
{
    stringstream ss;
    ss << "Come here!" << " where?";
    cout << left << setw(30) << ss.str() << setw(20) << "not here!" << endl;
    return 0;
}

Autres conseils

Vous devez imprimer le contenu de chaque colonne comme une seule chaîne, au lieu de plusieurs chaînes consécutives, parce que setw() formats que la chaîne suivante à imprimer. Donc, vous devez concaténer les chaînes avant l'impression, en utilisant par exemple string::append() ou +:

cout << left << setw(30) << (string("Come here!") + " where? ") << setw(20) << "not here!" << endl;

setw ne couvre que la chaîne suivante, vous aurez donc besoin de les concaténer.

cout << left << setw(30) << (string("Come here!") + string(" where? ")) << setw(20) << "not here!" << endl;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top