views:

259

answers:

3

I am trying to use a stringstream object in VC++ (VStudio 2003) butI am getting an error when I use the overloaded << operator to try and set some manipulators.

I am trying the following:

int SomeInt = 1;
stringstream StrStream;
StrStream << std::setw(2) << SomeInt;

This will not compile (error C2593: 'operator <<' is ambiguous).
Does VStudio 2003 support using manipulators in this way?
I know that I can just set the width directly on the stringstream object e.g. StrStream.width(2);
I was wondering why the more usual method doesn't work?

+1  A: 

Are you sure you included all of the right headers? The following compiles for me in VS2003:

#include <iostream>
#include <sstream>
#include <iomanip>

int main()
{
   int SomeInt = 1;
   std::stringstream StrStream;
   StrStream << std::setw(2) << SomeInt;
   return 0;
}
Jesse Beder
I was the missing <iomanip> header. Thanks a lot!
Anthony K
+1  A: 

I love this reference site for stream questions like this.

/Allan

Allan Wind
A: 

You probably just forgot to include iomanip, but I can't be sure because you didn't include code for a complete program there.

This complete program works fine over here using VS 2003:

#include <sstream>
#include <iomanip>

int main()
{
    int SomeInt = 1;
    std::stringstream StrStream;
    StrStream << std::setw(2) << SomeInt;
}