Задать вопрос

Как пользоваться манипулятором setw в с++?

Начал изучать c++ по книге Р. Лафоре.
В книге приводится пример использования данного манипулятора:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    long pop1=8425785, pop2=47, pop3=9761;
    cout << setw(9) << "Город " << setw(12) << "Население " << endl
    << setw(9) << "Москва" << setw(12) << pop1 << endl
    << setw(9) << "Киров" << setw(12) << pop2 << endl
    << setw(9) << "Угрюмовка" << setw(12) << pop3 << endl;
    return 0;
}

И результат его работы:
Город   Население
Москва    8425785
Киров          47
Угрюмовка    9761

У меня же результат получается немного другим, т.е. не происходит выравнивания правого столбца по правому краю:
Город Население 
Москва     8425785
Киров          47
Угрюмовка        9761
Program ended with exit code: 0

Для компиляции использовал xcode на mac os.
  • Вопрос задан
  • 22788 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Nikitos_STR
Попробуй:
cout << setw(9) << "Город " << setw(12) << "Население " << endl
<< setw(9) << "Москва" << setw(12) << right << pop1 << endl
<< setw(9) << "Киров" << setw(12) << right << pop2 << endl
<< setw(9) << "Угрюмовка" << setw(12) << right << pop3 << endl;
Ответ написан
Комментировать
@SuperMikhail
Добрый день. Тоже начал изучать c++ по книге Р. Лафоре, и тоже появилась такая проблема.
Все оказалось банально. Просто Xcode и прочие компиляторы не корректно работают с кириллицей, поэтому получаются такие сдвиги. Если все будет на латинице, то будет выравнивание по правому краю.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы