Ребят вы даже не заметили, как превратили тему в мерение "письками". Чисто как лузер в программирование считаю, что не важно на каком языке вы работаете. круче машинного кода и ассемблера нифига нет!!!
Можно сделать все что угодно на любом из языков, с моей точки зрения ситуация такова, что мы уже отошли от написания максимально "экономичного" кода, т.к. ресурсы современных компьютеров позволяют меньше греть голову на тему "как мне все запихавть в 10кб памяти и чтобы еще и не потерять функционал", именно поэтому пришла(наступает) "эпоха" высокоуровневых языков. Поэтому на сегодняшний день задача перед программистом стоит простая, написать быструю программу и относительно "пофиг" сколько она памяти жрет(в разумных пределах). Поэтому пренебрегать не стоит и высокоуровневыми языками.
Одно остается неизменным, чтобы понять что и как делать правильно необходимо знать как выполнить эти задачи на машинном уровне с максимальной производительностью, а для этой цели необходимо понимание и низкоуровневых языков, т.к. это приводит к частичному пониманию как с этими кодами работают "куски железа", за которыми каждый из нас сейчас сидит и чуть ли кипятком не писает споря, что лучше.
Еще разок повторюсь, что начал изучать с++ с планами на углубление в с. Учусь по книжке:"Лафоре Р. - Объектно-ориентированное программирование в С++ (4-е изд.) 2004".
А теперь проблему в студию: Дошел до манипулятора setw там есть вот такая вот тема:
//width2.cpp
//применение манипулятора setw
#include <iostream>
#include <iomanip> // для использования setw
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
ну и далее текст:"Манипулятор setw печатает число или строку, следующую за ним в потоке,
в поле фиксированной длины n, где n — аргумент манипулятора setw(n). Значе-
ние переменной, помещаемой в поле, выравнивается справа."
Почему setw не производит выравние, а работает как операция сдвига? т.е. если я компилирую програмку получаю вот такой результат,:
Москва 8425785
Киров 47
Угрюмовка 9761
вместо указанного в книжке(см. рез выше)??
Чтобы привести вывод к виду указанному в книжке при помощи этого манипулятора решил изменить значение (n) и сделал вот так:
#include <iostream> // for cout
#include <iomanip> // for setw
int main()
{
long pop0=8425785, pop1=47, pop3=9761;
std::cout << std::setw(9)<<"Город"<<std::setw(60)<<"население"<<std::endl
<<std::setw(9)<<"Москва"<<std::setw(50)<<pop0<<std::endl
<<std::setw(9)<<"Киров"<<std::setw(51)<<pop1<<std::endl
<<std::setw(9)<<"Угрюмовка"<<std::setw(47)<<pop3<<std::endl;
return 0;
}
Кароче не увидел я никакого выравнивания "справа". мб я чет не так сделал или не так что то понял?
P.S.: Я работаю на debian.