C++ Программирование в среде С++ Builder 5

Форматирующие функции-элементы


Эти функции являются элементами класса ios и перегружены таким образом, чтобы можно было либо читать, либо устанавливать значение соответствующего атрибута потока. Если аргумент в вызове отсутствует, функция возвращает текущее значение атрибута. Если аргумент указан, функция устанавливает новое и возвращает предыдущее значение атрибута.

long width(long)

Эта функция предназначена для чтения или установки атрибута ширины поля.

  • Применяемая ко входному потоку, функция позволяет задать максимальное число вводимых символов.
  • На выходном потоке функция задает минимальную ширину поля вывода.
  • Если действительное поле вывода меньше установленной ширины, выводятся дополнительные заполняющие символы. Символ заполнения определяется специальным атрибутом потока.
  • Если действительное поле вывода больше установленной ширины, ее значение игнорируется.
  • Значением ширины по умолчанию является 0 (ширина поля определяется выводимыми данными).
  • Ширина поля сбрасывается в 0 после каждой передачи в поток.
  • char fill(char)

    Функция позволяет прочитать или установить текущий символ заполнения.

    По умолчанию символ заполнения — пробел.



    long precision(long)

    Эта функция позволяет прочитать или установить значение атрибута точности, определяющего либо общее число выводимых цифр, либо число цифр дробной части.

  • Точность по умолчанию равна шести цифрам.
  • Если установлен флаг scientific или fixed, точность задает число цифр после десятичной точки.
  • Если ни один из этих флагов не установлен, точность задает общее число значащих цифр.
  • Пример

    Ниже приводится программа, демонстрирующая форматирование потока с помощью функций-элементов класса ios.

    Листинг 9.1. Демонстрация форматирующих функций потока

    ///////////////////////////////////////////////

    // Format.срр: Форматирующие функции-элементы ios.

    //

    #include <iostream.h>

    #pragma hdrstop

    #include <condefs.h>

    #pragma argsused

    int main(int argc, char* argv[])

    {

    //

    // Ширина поля при вводе и выводе.

    //

    cnar sir [16];


    cout<< "Enter something: ";

    cin.width(16); // Ввод не более 15 символов. cin>> str;

    cout.width(32); // Вывести в поле шириной 32. cout<< str<< "\n\n";

    //

    // Заполняющий символ и ширина поля. Ширина сбрасывается

    // после каждой операции, поэтому она устанавливается

    // для каждого числа.

    //

    int h = 7, m = 9, s = 0; // Выводятся в виде hh:mm:ss.

    cout.fill('0'); cout << "Time is ";

    cout.width (2); cout << h << ' : ' ; cout.width (2) ;

    cout<< m<< ' : ' ;

    cout.width (2) ;

    cout<< s<< ".\n\n";

    cout.fill (' '); // Восстановить пробел.

    //

    // Точность.

    //

    double d = 3.14159265358979;

    float f = 27182.81828;

    cout.precision (5);

    cout << f << '\n'; . // Выводит "27183" .

    cout << d << '\n'; ' // Выводит "3.1416".

    cout .precision (4) ;

    cout << f << '\n'; // Выводит "2.718е+04".

    cout.setf(ios::fixed); // Установить флаг fixed.

    cout<< f<<'\n'; // Выводит "27182.8184".

    return 0;

    }


    Содержание раздела