36

I am trying to compile using gcc a project which earlier used SunStudio and am getting an error in the following code:

ostream & operator << ( ostream & os, const UtlDuration & d )
{
    if ( d._nsec == 0 )
    {
        os << d._sec << " sec";
        return os;
    }
    else
    {
        cout.fill( '0' );
                os << d._sec << "." << std::setw(9) << d._nsec << " sec";
        cout.fill( ' ' );
        return os;
    }
}

Error: “setw” is not a member of “std”

I am not able to resolve this error can someone please explain me reason behind this error

JB.
  • 40,344
  • 12
  • 79
  • 106
anonymous
  • 1,920
  • 2
  • 20
  • 30

3 Answers3

91

You need to include the header which declares it:

#include <iomanip>
David Heffernan
  • 601,492
  • 42
  • 1,072
  • 1,490
2

Do following two steps:

  1. include iomanip
  2. write std::setw() instead of setw()

Compile and enjoy...

0

setw(num) is not defined in iostream library. So add-

#include <iomanip>

in the code and add

using namespace std

it worked for me.

Eric Aya
  • 69,473
  • 35
  • 181
  • 253
  • `using namespace std` is unnecessary if you use `std::setw` (as OP does), and is often [considreded bad practice](https://stackoverflow.com/q/1452721/2752075). – HolyBlackCat Mar 27 '22 at 11:21
  • yes you don't need to add the std namespace twice. either you define it with setw as-(std:: setw) or you can mention it by -(using namespace std;). One should not use both. – Sanjib Dey Choudhury Mar 28 '22 at 14:07