Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Программирование на С++  (Прочитано 7399 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн NetFly

  • Новичок
  • *
  • Сообщений: 9
  • работаю с debian, учу с++
    • Просмотр профиля
Re: Программирование на С++
« Ответ #60 : 28 Октября 2012, 19:18:18 »
Ребят, а подскажите пожалуйста, почему вот такой код не верно работает, либо опять же я сделал ошибку?
#include <iostream>
#include <iomanip>
int main()
{
        long pop1=100, pop2=200, pop0=500;
        std::cout.setf(std::ios_base::left);
        std::cout<<std::setw(11)<<"gorod";
        std::cout.setf(std::ios_base::right);
        std::cout<<std::setw(40)<<"naselenie"<<std::endl;
        std::cout.setf(std::ios_base::left);
        std::cout<<std::setw(11)<<"Moskva";
        std::cout.setf(std::ios_base::right);
        std::cout<<std::setw(40)<<pop0<<std::endl;
        std::cout.setf(std::ios_base::left);
        std::cout<<std::setw(11)<<"Piter";
        std::cout.setf(std::ios_base::right);
        std::cout<<std::setw(40)<<pop2<<std::endl;
        std::cout.setf(std::ios_base::left);
        std::cout<<std::setw(11)<<"Vladivostok";
        std::cout.setf(std::ios_base::right);
        std::cout<<std::setw(40)<<pop1<<std::endl;
return 0;
}
Вывод с него получаю вот такой:
gorod                                     naselenie
     Moskva                                     500
      Piter                                          200
Vladivostok                                  100

Как можно наблюдать только слово город выравнивается по левому краю, остальное все справа.
Даже не знаю как спросить об этом google.

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

завтра попробую переписать ее на с, может в нем получится сделать так, как положено. Да не ожидал, что простейшее форматирование текста в консоли окажется таким "гемором".

Пользователь решил продолжить мысль 28 Октября 2012, 19:27:48:
Просто не догоняю, почему в изначальной версии программы setw- работает как операция сдвига, а с указанием форматирования после "gorod", начинает работать как надо и выравнивает справа??? бред какой то.

Пользователь решил продолжить мысль 28 Октября 2012, 19:36:16:
Особо интересен момент, что "gorod", не смотря на наличие "setw", встал с лева, а вот после вдруг все норм оказалось и что удивительно он не разбросал "хаотично" вывод, как это было, опять таки, в первой версии!!! Как тогда вообще использовать этот манипулятор и нафига он нужен???

Пользователь решил продолжить мысль 29 Октября 2012, 02:56:40:
Ладно ребят, потупил я потупил и дошло до меня че и как делать, спасибо за внимание, как будет следущая проблема напишу, если не смогу решить самостоятельно.
« Последнее редактирование: 29 Октября 2012, 02:56:40 от NetFly »

 

Страница сгенерирована за 0.033 секунд. Запросов: 25.