Г. Шилдт - Полный справочник по C++ (1109478), страница 111
Текст из файла (страница 111)
Любые другие символы, содержащиеся в строке форматирования, копируются в строку зсг без изменения. Время и дата отображаются в соответствии с локальными установками. Команды форматирования приведены ниже. Обратите внимание на то, что многие команды различают прописные и строчные буквы. Функция векбейте() возвращает количество символов, записанных в строку иг. При нсудаче она возвращает нуль.
дедссаяеакя Команда формагярзаакня Сокращенное название дня недели Полное название дня недели Сокращенное название месяца Полное название месяца Стандартная строка даты н времени День месяца е виде дегятнчною числа (0-31) Час (0-23) Час (1-12) День года в виде десятичного числа (1-366] Месяц е виде десятичного числа (1 — 12) Минута в виде десятичного числа (0-59) Локальный зквнеалент обозначений АМ (до полудня] н РМ (лосле полудня) Секунда е виде десятичного числа (0-60) Неделя года, считая воскресенье первым днем (0-53) День недели в виде десятичного числа (0-6, воскресенье задается нулем] Неделя года, учитывая, что первый день — понедельник (0-53) Стандартная строка даты Стандартная строка времени Год в виде десятичного числа, столетие игнорируется (0-99) Год в виде десятичного числа, столетие уситывается Название часового пояса Знаклроцента Функция бте взпс1цде <сгике> виве с сзлсе(сулсе с *силе) с Функция езде() возвращает текущее календарное время.
установленное системой. Если системное время не задано, функция возвращает число -(. Функцию евме<) можно вызывать либо с нулевым указателем, лсибо с указателем на переменную типа ейме е. Во втором случае переменной будет присвоено календарное время. Зависимые функции: зооазвззае(), 9мсьве(], ввбе1меО и оезсае(). Часть )П. Библиотека стандартных функций этой главе описываются функции динамического распределения памяти, унасле- 8 дованные от языка С. Их ядро образуют функции аа11ос() и скее(). При каждом вызове функции аа11осО вьщеляется очередной участок динамической памяти. Каждый вызов функции скееО освобождает ранее выделенную память. Область динамической памяти называется кучей.
Прототипы функций динамического распределения памяти находятся в заголовке <свеп11ь>. Программы на языке С должны вместо него использовать заголовочный файл аед11Ь.Ь. Все компиляторы языка С++ поддерживают четыре функции динамического распределения памяти: са11ос(), аа11ос(), свае() и кеа11ос(). Однако каждый компилятор поддерживает также их варианты, учитывающие специфику конкретной операционной среды. Детали следует искать в докуме~пации компилятора.
Несмотря на то что функции, описываемые в этом разделе, являются частью языка С++, мы не рекомендуем применять их в своих программах, поскольку в языке С++ предусмотреныы операторы динамического распрепеления памяти оее и Пе1еее. Они облалают рядом преимуществ по сравнению с функциями динамического распределения паьопи.
Во-первы, оператор оее автоматически определяет правильный объем памяти, необходимый для размещения объекта указанного типа, Во-вторых, он возвращает указатель правильного типа, ссылающийся на выделенную память. В-третьих, операторы оам и ()е1еее можно перегружать. Благодаря этим особенностям операторы оее и пе1есе вытеснили функции динамического распределения памяти из программ, написанных на языке С++. Функция са!!ос 1 * ()1пс1ос)е <сеМ11Ь> чо1о *са11ос(язве С пшп, в1ае Е з)ге); Функция са11ос() выделяет память, размер которой равен пят*лев байтов.
Иначе говоря, функция са11ос() выделяет динамическую память, достаточнуЮ ЛЛя размещения массива, состоящего из пит элементов, имеющих размер зце байтов. Функция са11осО возвращает указатель на первый байт выделенной области. Если требуемый объем памяти выделить невозможно, возвращается нулевой указатель. Прежде чем использовать выделенную память, необходимо проверить значение„возвращаемое функцией са11ос().
Зависимые функции: Скее(), аа11осО и хеа11ос(). Функция и ЕЕ $1ос1оое <свсс)11Ь> чо1г) гхее[чо1д *ргг); Функция скее() освобождает память, отмеченную указателем ргг. После этого освобожденную память можно использовать вновь. Функцию скее() можно применять лишь к указателю, использованному ранее в вызове функций ва11ос() или са11ос().
В противном случае функция скее() может разрушить весь механизм распределения динамической памяти и вызвать крах операционной сисгемы. Зависимые функции: са11осО, аа11осО и кеа11ос(). Функция ваиос 1 Ь1пс1цс)е <слег)11Ь> но1<) *ша11ос (в1хе е юге) р Часть 111. Библиотека стандартных функций Функция та11ос() возвращает указатель на первый байт выделенной области, имсющей размер жве байтов. Если требуемый обьсм памяти выделить невозможно, возвращается нулевой указатель.
Прежде чем использовать вьщеленную память, необходимо проверить значение, возвращаемое функцией гаа11оо(). Попытка использовать нулевой указатель обычно приводит к краху операционной системы. Зависимые функции; кхев(), са11ос() и ееа11ос(]. Функция геайос *. аапс1цг)е <свес)1(Ь> чЛ() *хевПос(чоас) *)Лг, в1ве С з)те); Функция ева11ос() изменяет размер выделенной ранее памяти, на котору)о ссылается указатель ргг. Значение параметра г(те может быть как меньше, так и балыке предыдущего объема. Функция хва11ос() возвращает указатель на первый байт вновь выделенного блока памяти, поскольку может возникн)ть необходимость скопи.
ровать его в другое место. В атом случае солсржимое старого блока копируется в новый, н потери информации не происходит. Если указатель ргг является нулевым, функция ееа11ос() просто выделяет з)те байтов памяти и возвращает указатель на первый байт выделенного участка. Если параметр жее равен нулю, память, на которую ссылается указатель ргг, освобождается. Если требуемый объем памяти выделить невозможно, возвращается нулевой указатель, и старый блок памяти остается неизменным. Зависимые функции: хаев(), ма11ос() и са11ос().
Глава 29. Функции динамического распределения памяти Злачекяе Максимальная длина многобайтового символа (в байтах). Нулевой указатель. Максимальное значение, которое может вернуть функция капа() . Значение, возвращаемое вызывающему процессу в случае аварийного завершения программы. Значение, возвращаемое вызывающему процессу в спу .ае успешного завершения программы. вано изх вкзт ватсона Если для выполнения функции необходим другой заголовок, этот факт отмечается в соответствующем разделе. Функция аЬог~ З1пс1ибе <свет)11Ь> чотс) аЬохе(чоЫ) г Функция аьокс() приводит к аварийному завершению программы.
Как правило, при этом буфера файлов не выгружаются. Если операционная система позволяет, функция аЬоке[> аозвраШает вызывающему процесс> значение, зависяШЕЕ От КОнкрстной реализации и означающее аварийное завершение работы.
Зависимые функции: ев1с() и асежзс(]. Функция аЬз т Н1пс1ибе <свет)11Ь> 1пс аьв((пс лшл); 1опо аьа(1опо лига)г доиЪ|е аЬв(г)оиЬ1е ллгл); Функция аЬв() возвраШает абсолютное значение числа палс Версия функции аъа() для чисел типа 1опв совпадает с функцие(( 1аьв(). Версия функцгли аьв() для чисел типа бооь1е совпадает с функцией даьв() . Зависимая функцзи: 1аЬв () . Макрос аззег1 Ндпс1иг(е <свезете> чо1г) певеке(1пс ехр); Если значение выражения схр равно нулю, макрос аввекс(), определенный в заголовке <еаввекс>, записьгваст в поток асбест информацию об ошибке, а затем пре- Часть (И.
Библиотека стандартных функций стандартной библиотеке определен ряд служебных функций. К ним относятся В функции, выполняющие преобразования, обработку списков аргулгентов, сортировку и поиск, а также генерирующие случайные числа. Многие из атил функций объявлены в заголовке <свсжзЬ>. (В программах па языке С ему соответствует заголовочный файл всжзь.ь.) Кроме того, в этом заголовке определены типы Жч с и 1б1ч с, являющиеся типами значений, возвращаемых функциями бз () и 1Жч() соответственно.
Помимо этого, в заголовке <оасгЖо> определен тип взае С, ПРедставляющий СОбой тип значения, возвращаемого оператором вааео1. В заголовке определены следующие макросы. кращает выполнение программы. В противном случае макрос ааввхе() не выполняет никаких действий. Хотя точззое содержание сообщений зависит от конкретной реализации, многие компиляторы используют следующий шаблон. а Аман(оп (аз(ез(: «вмраззеевззв». 61е «файв>, йпе <)гаелигв> Макрос вхс() обычно используется для верификации программы, а яыражеиие составляется так, чтобы оно принимало значение ехззв, только если никаких ошибок не произошло. Макросы авввхе() не обязательно удалять из программы после отладки, поскольку, если в программе определен макрос ирввцс, макрос аввехе() просто игнорируется.
Зависимая функция: аЬохе ( ) . Функция а1ехй В(пс1пде <саге(11Ь» зпс ассхз.с(поза ( зале)(тоьс())з Функция асезе1с() регистрирует функцию, которая должна выполняться при выходе из программы. Функция аееххе() возвращает нуль, если функция выхода успешно зарегистрирована, и ненулевое значение — в противном случае. В качестве фуззкции выхода можно зарегистрировать до 32 фуззкций, и все они вызываются в порзщке, обратном порядку их регистрации. Зависимые функции: ехэе() и аЬохе().