Здравствуйте, Ael, Вы писали:
Ael>Вывод на консоль чисел и их квадратов в двух выровненных столбцах.
Ael>Ael>#include <iostream>
Ael>#include <string>
Ael>const int iUpTo=100;
Ael>int main()
Ael>{
Ael> char* charsSpace=(char*)malloc(32);
Ael> _itoa(iUpTo,charsSpace,10);
Ael> std::string strSpace=std::string(charsSpace);
Ael> std::string::size_type szMax=strSpace.size();
Ael> int n;
Ael> for (int i=0; i<=iUpTo;i++){
Ael> n=szMax+1-(std::string(_itoa(i,charsSpace,10)).size());
Ael> std::cout <<i <<std::string(n,' ') <<i*i <<std::endl;
Ael> }
Ael> free((void*)charsSpace);
Ael> std::string strDummy;
Ael> std::cin >> strDummy;
Ael> return 0;
Ael>}
Ael>
Ael>Меня беспокоит выделенная строка. То есть только для того, чтобы определить размер разрыва между столбцами, я создаю копирую символьное представление числа в область памяти на которую указывает charsSpace, потом создаю std::string и получаю его size(). Как добиться того же эффекта выравнивания более производительно?
Ael>Спасибо!
Посмотри примеры использования манипуляторов setw, setiosflags( ios::left ) ну и кончено resetiosflags( ios::left ), может еще точность понадобится — setprecision( 1 ).