2013-11-19 4 views
1

Я знаю, что это может показаться вам тривиальным, то, что я пытаюсь сделать, это отформатировать макет.Проблемы с форматированием вывода C++

X  Y  Z Dist. Fr Origin 
- - - - - - - - - - - - - - - - - - - 
[ -9, -9, -9] 15.589 
[ -99, -99, -99] 171.473 
[-999, -999, -999] 1730.320 
[ 3, 3, 3] 5.196 
[ 23, 23, 23] 39.837 
[ 123, 123, 123] 213.042 

Это то, что я хотел бы отобразить.

Я использую оператор ostream, который выглядит как

ostream& operator<< (ostream& os, const Point& d) 
{ 
    os << "[" 
     << d.x 
     << ", " 
     << d.y 
     << "]" 
     << d.distances; 

    return os; 
} 

Я попытался с помощью setw, setprecision (3) для десятичных, но он не работает.

Point.cpp: In function ‘std::ostream& operator<<(std::ostream&, const Point&)’: 
Point.cpp:9: error: ‘setw’ was not declared in this 

Я надеюсь, что кто-то может мне помочь. Благодарю.

+0

Просьба показать строку 9 в Point.cpp. Я предполагаю, что вам не хватает std :: перед setw. – dutt

+0

Пожалуйста, не показывайте нам код, который работает. Покажите нам короткую, полную программу, которая терпит неудачу. См. Http://SSCCE.ORG для получения дополнительной информации. –

+0

Проверьте правильные манипуляторы: http://en.cppreference.com/w/cpp/io/manip –

ответ

2

Если вы видите, например, this reference вы видите, что вам нужно включить заголовочный файл <iomanip>.

Кроме того, если вы не используете using namespace std; в своем коде (который я рекомендую вам не делать), то вам нужен префикс с std::, как std::setw.

Смежные вопросы