Re: выравнивание консольного вывода
От: Batiskaf Израиль http://www.mult.ru/
Дата: 04.07.04 07:47
Оценка: 10 (1)
Здравствуйте, 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 ).
Will I live tomorrow? Well I just can't say
But I know for sure — I don't live today.
Jimi Hendrix.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.