Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > cout.width


Автор: Rickert 28.6.2007, 05:49
Есть небольшая функция лога, котора должна формировать каждую строку примерно так:
Цитата
(<номер строки, 4 знака>):(<название функции>, знаков 15): <текст сообщения>\n

Хочется чтобы всё это было читабельно.
Для того, чтобы выделить определённое кол-во знаков под что-то использую функцию width. Применяю для cout и его же использую для вывода.
Но! Когда я, например, указываю 4 знака для номера строки, то ожидаю результата:
Цитата
4   : ...

А она делает:
Цитата
   4:...

пробелы устанавливаюся в начало, а не в конец. Как это поменять, а то очень неудобно?

Автор: evGenie 28.6.2007, 07:49
adjustfield

Автор: Rickert 28.6.2007, 08:14
Не нашёл информации. Можно подробнее и хорошо бы с примером.

Автор: Lomir 28.6.2007, 10:11
Код

std::cout << std::ios::right/*std::ios::left*/ << std::setw(10) << "Text" << "Text2" << '\n';

Автор: Rickert 28.6.2007, 10:48
Lomir, и что это ты такое непонятное проделал и ничего не получил?

Автор: bsa 28.6.2007, 11:53
Что здесь непонятного? Выставил выравнивание по правому краю, установил ширину 10 и вывел два текста. В итоге они должны были быть выровнены по правому краю 10-ти символьного поля.

Автор: Rickert 28.6.2007, 15:46
Ты попробуй сам свой код и посмотри то, о чём я просил.

Автор: zkv 28.6.2007, 15:59
Код

#include <iostream>
#include <iomanip>

int main()
{
    std::cout<<std::setw( 20 )<<std::left<< "Text" << std::setw( 20 )<<"Text2" << '\n'; //по левому
    std::cout<<std::setw( 20 )<<std::right<< "Text" << std::setw( 20 )<<"Text2" << '\n';//по правому
    std::cin.get();
}

так понятнее?

Автор: Rickert 29.6.2007, 04:12
zkv, Благодарю!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)