Pregunta

Después de conseguir una respuesta útil aquí , tengo encuentro con otro problema: se presentan dos o más cadenas en la columna quiero que se muestre en para un ejemplo del problema que tengo, quiero esta salida:.

Come here! where?             not here!

, pero en lugar de obtener

Come here!                     where? not here!

cuando se utiliza el código

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

Me aseguré (creo) que el ancho de las dos columnas podría contener las dos cadenas, pero no importa lo grande que puedo configurar el ancho de las columnas sea, el error sigue ahí.

¿Fue útil?

Solución

Como se ha dicho, setw() sólo se aplica a la entrada siguiente, y que está tratando de aplicarlo a dos entradas.

Una alternativa a las otras sugerencias que le da la oportunidad de utilizar variables en lugar de constantes literales:

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

Otros consejos

Usted debe imprimir el contenido de cada columna como una sola cadena, en lugar de múltiples cadenas consecutivas, debido setw() sólo se da formato a la siguiente cadena a imprimir. Por lo que debe concatenar las cadenas antes de imprimir, por ejemplo, usando string::append() o +:

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

setw sólo cubre la siguiente cadena, por lo que necesita para concatenar ellos.

cout << left << setw(30) << (string("Come here!") + string(" where? ")) << setw(20) << "not here!" << endl;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top