// Эта программа отображает текущее системное время.

#include

#include

using namespace std;

int main()

{

 struct tm *ptr;

 time_t lt;

 lt = time('\0');

 ptr = localtime(<);

 cout << ptr->tm_hour << ':' << ptr->tm_min;

 cout << ':' << ptr->tm_sec;

 return 0;

}

Вот один из возможных результатов выполнения этой программы:

14:52:30

Несмотря на то что ваши программы могут использовать поэлементную форму представления времени и даты (как показано в предыдущем примере), проще всего сгенерировать строку времени и даты с помощью функции asctime(), прототип который выглядит так:

char *asctime(const struct tm *ptr);

Функция asctime() возвращает указатель на строку, которая содержит результат преобразования информации, хранимой в адресуемой параметром ptr структуре, и имеет следующую форму.

день месяц число часы:минуты:секунды год\n\0

Указатель на структуру, передаваемый функции asctime(), часто получают с помощью функции localtime().

Область памяти, используемая функцией asctime() для хранения форматированной строки результата, представляет собой символьный массив (статически выделяемый в памяти), который перезаписывается при каждом вызове этой функции. Если нужно сохранить содержимое данной строки, скопируйте его в какую-нибудь другую область памяти.

В следующей программе демонстрируется использование функции asctime() для отображения системного времени и даты.

// Эта программа отображает текущее системное время.

#include

#include

using namespace std;

int main()

{

 struct tm *ptr;

 time_t lt;

 lt = time('\0');

 ptr = localtime(<);

 cout << asctime(ptr);

 return 0;

}

Вот один из возможных результатов выполнения этой программы.

Wed Jul 28 15:05:51 2004

В языке C++ предусмотрены и другие функции даты и времени, с которыми можно познакомиться, обратившись к документации, прилагаемой к вашему компилятору.

Ссылки на структуры

Для доступа к структуре можно использовать ссылку. Ссылка на структуру часто используется в качестве параметра функции или значения, возвращаемого функцией. При получении доступа к членам структуры с помощью ссылки используйте оператор "точка". (Оператор "стрелка" зарезервирован для доступа к членам структуры с помощью указателя.)

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

// Демонстрируем использование ссылки на структуру.

#include

using namespace std;

struct mystruct {

 int a; int b;

};

mystruct &f(mystruct &var);

int main()

{

 mystruct x, y;

 x.a = 10; x.b = 20;

 cout << "Исходные значения полей x.a and x.b: ";

 cout << x.a << ' ' << x.b << '\n';

 y = f (x);

 cout << "Модифицированные значения полей x.a и x.b: ";

 cout << x.a << ' ' << x.b << '\n';

 cout << "Модифицированные значения полей y.a и y.b: ";

 cout << y.a << ' ' << y.b << '\n';

 return 0;

}

// Функция, которая получает и возвращает ссылку на структуру.

mystruct &f(mystruct &var)

{

 var.a = var.a * var.a;

 var.b = var.b / var.b;

 return var;

}

Вот результаты выполнения этой программы.

Исходные значения полей x.a and x.b: 10 20

Модифицированные значения полей х.а и x.b: 100 1

Модифицированные значения полей у.а и y.b: 100 1

Ввиду существенных затрат системных ресурсов на передачу структуры функции (или при возвращении ее функцией) многие С++-программисты для выполнения таких задач используют ссылки на структуры.

Использование в качестве членов структур массивов и структур

Член структуры может иметь любой допустимый тип данных, в том числе и такие составные типы, как массивы и другие структуры. Поскольку эта тема нередко вызывает у программистов затруднения, имеет смысл остановиться на ней подробнее.

Массив, используемый в качестве члена структуры, обрабатывается вполне ожидаемым способом. Рассмотрим такую структуру.

struct stype {

Перейти на страницу:

Все книги серии Изучайте C++ с профессионалами

Похожие книги