2008-09-16 2 views
0

Я пытаюсь использовать объект stringstream в VC++ (VStudio 2003), но я получаю сообщение об ошибке при использовании перегруженного оператора < <, чтобы попытаться установить некоторые манипуляторы.stringstream manipulators & vstudio 2003

Я пытаюсь следующее:

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

Это не будет компилировать (ошибка C2593: 'Оператор < <' неоднозначно).
Поддерживает ли VStudio 2003 использование манипуляторов таким образом?
Я знаю, что могу просто установить ширину непосредственно на объект stringstream, например. StrStream.width (2);
Мне было интересно, почему более обычный метод не работает?

ответ

1

Вы уверены, что включили все правильные заголовки? Следующие компилирует для меня в VS2003:

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

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

Я был недостающим заголовок. Большое спасибо! – 2008-09-16 06:23:07

0

Вы, наверное, просто забыли включить iomanip, но я не могу быть уверен, потому что вы не включают в себя код для полной программы там.

Эта полная программа отлично работает здесь с помощью VS 2003:

#include <sstream> 
#include <iomanip> 

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