Domanda

Dopo aver ottenuto un utile risposta qui , ho imbatto in un altro problema: la visualizzazione di due o più stringhe nella colonna voglio che essere visualizzato in per un esempio del problema che ho, voglio che questa uscita:.

Come here! where?             not here!

ma invece ottenere

Come here!                     where? not here!

quando uso il codice

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

Ho fatto in modo (credo) che la larghezza di entrambe le colonne potrebbe contengono le due stringhe, ma non importa quanto grande ho impostato la larghezza delle colonne di essere, l'errore è ancora lì.

È stato utile?

Soluzione

Come detto, setw() vale solo per la prossima di ingresso, e si sta tentando di applicarla ai due ingressi.

Un'alternativa agli altri suggerimenti che ti dà la possibilità di utilizzare le variabili al posto di costanti letterali:

#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;
}

Altri suggerimenti

Si dovrebbe stampare il contenuto di ogni colonna come una singola stringa, invece di stringhe multiple consecutive, perché setw() formatta solo la stringa successiva da stampare. Così si dovrebbe concatenare le stringhe prima della stampa, utilizzando per esempio string::append() o +:

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

setw copre solo la stringa successiva, quindi avrai bisogno di concatenare loro.

cout << left << setw(30) << (string("Come here!") + string(" where? ")) << setw(20) << "not here!" << endl;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top