Search code examples
c++coutsetw

Displaying text in correct column


After getting a helpful answer here, I have run into yet another problem: displaying two or more strings in the column I want it to be displayed in. For an example of the problem I have, I want this output:

Come here! where?             not here!

but instead get

Come here!                     where? not here!

when I use the code

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

I made sure (I think) that the width of both columns could contain the two strings, but no matter how large I set the width of the columns to be, the error is still there.


Solution

  • As stated, setw() only applies to the next input, and you are trying to apply it to two inputs.

    An alternative to the other suggestions which gives you a chance to use variables in place of literal constants:

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