LoveRead.info » Книги » Разная литература » Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп

Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп

Книгу Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

287 0 18:03, 26-08-2023
Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп
26 август 2023

Книга Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп читать онлайн бесплатно без регистрации

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

    1 ... 325 326 327 328 329 330 331 332 333 ... 337
    Перейти на страницу:
    все функции из библиотеки stdio, более полную информацию можно найти в хороших учебниках по языку С, например в книге K&R.

    Б.10.3. Строки в стиле языка С

    Строки в стиле языка C представляют собой массивы элементов типа char, завершающиеся нулем. Эти строки обрабатываются функциями, описанными в заголовках <cstring> (или <string.h>; примечание: но не <string>) и <cstdlib>.

    Эти функции оперируют строками в стиле языка С с помощью указателей char* (указатели const char* ссылаются на ячейки памяти, предназначенные исключительно для чтения).

    Обратите внимание на то, что в языке C++ функции strchr() и strstr() дублируются, чтобы обеспечить безопасность типов (они не могут преобразовать тип const char* в тип char*, как их аналоги в языке C); см. также раздел 27.5.

    Функции извлечения символов просматривают строку в стиле языка С в поисках соответственно форматированного представления числа, например "124" и "1.4". Если такое представление не найдено, функция извлечения возвращает 0. Рассмотрим пример.

    int x = atoi("fortytwo"); /* x становится равным 0 */

    Б.10.4. Память

    Функции управления памятью действуют в “голой памяти” (без известного типа) с помощью указателей типа void* (указатели const void* ссылаются на ячейки памяти, предназначенные только для чтения).

    Функции malloc() и ей подобные не вызывают конструкторы, а функция free() не вызывает деструкторы. Не применяйте эти функции к типам, имеющим конструкторы или деструкторы. Кроме того, функция memset() также никогда не должна применяться к типам, имеющим конструктор.

    Функции, начинающиеся с приставки mem, описаны в заголовке <cstring>, а функции выделения памяти — в заголовке <cstdlib>.

    См. также раздел 27.5.2.

    Б.10.5. Дата и время

    В заголовке <ctime> можно найти несколько типов и функций, связанных с датами и временем.

    Структура tm определяется примерно так:

    struct tm {

      int tm_sec;   // секунда минуты [0:61]; 60 и 61

                    //"високосные" секунды

      int tm_min;   // минута часа [0,59]

      int tm_hour;  // час дня [0,23]

      int tm_mday;  // день месяца [1,31]

      int tm_mon;   // месяц года [0,11]; 0 — январь (примечание: не [1:12])

      int tm_year;  // год с 1900- го года ; 0 — 1900-й год,

                    // 102 — 2002-й год

      int tm_wday;  // дни, начиная с воскресенья [0,6]; 0 — воскресенье

      int tm_yday;  // дней после 1 января [0,365]; 0 — 1 января

      int tm_isdst; // часы летнего времени

    };

    Функции для работы с датами и временем

    clock_t clock();  // количество тактов таймера после старта программы

    time_t time(time_t* pt);  // текущее календарное

                              // время

    double difftime(time_t t2, time_t t1); // t2–t1 в секундах

    tm* localtime(const time_t* pt); // локальное время для *pt

    tm* gmtime(const time_t* pt);    // время по Гринвичу (GMT) tm для

                                     // *pt или 0

    time_t mktime(tm* ptm);       // time_t для *ptm или time_t(–1)

    char* asctime(const tm* ptm); // представление *ptm в виде

                                  // C-строки

    char* ctime(const time_t* t) { return asctime(localtime(t)); }

    Пример результата вызова функции asctime(): "Sun Sep 16 01:03:52 1973n".

    Рассмотрим пример использования функции clock для измерения времени работы функции (do_something()).

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

    {

      int n = atoi(argv[1]);

      clock_t t1 = clock(); // начало отсчета

      if (t1 == clock_t(–1)) { // clock_t(–1) означает "clock()

                               // не работает "

        cerr << "Извините, таймер не работает n";

        exit(1);

      }

      for (int i = 0; i<n; i++) do_something(); // временной цикл

      clock_t t2 = clock(); // конец отсчета

      if (t2 == clock_t(–1)) {

        cerr << "Извините, таймер переполнен n";

        exit(2);

      }

      cout << "do_something() " << n << " работала "

           << double(t2–t1)/CLOCKS_PER_SEC << " секунд "

           << " (точность измерения: " << CLOCKS_PER_SEC

           << " секунд )n";

    }

    Явное преобразование double(t2–t1) перед делением является необходимым, потому что число clock_t может быть целым. Для значений t1 и t2, возвращаемых функцией clock(), величина double(t2–t1)/CLOCKS_PER_SEC является наилучшим системным приближением времени в секундах, прошедшего между двумя вызовами.

    Если функция clock() не поддерживается процессором или временной интервал слишком длинный, то функция clock() возвращает значение clock_t(–1).

    Б.10.6. Другие функции

    В заголовке <cstdlib> определены следующие функции.

    Функция для сравнения (cmp), используемая функциями qsort() и bsearch(), должна иметь следующий тип:

    int (*cmp)(const void* p,const void* q);

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

    • оно является отрицательным, если *p меньше, чем *q;

    • оно равно нулю, если *p равно *q;

    • оно больше нуля, если *p больше, чем *q.

    Подчеркнем, что функции exit() и abort() не вызывают деструкторы. Если хотите вызывать деструкторы для статических объектов и объектов, созданных автоматически (см. раздел A.4.2), генерируйте исключение.

    Более полную информацию о функциях из стандартной библиотеки можно найти в книге K&R или другом авторитетном справочнике по языку С++.

    Б.11. Другие библиотеки

    Исследуя возможности стандартной библиотеки, вы, конечно, не найдете чего-то, что могло бы быть полезным для вас. По сравнению с задачами, стоящими перед программистами, и огромным количеством доступных библиотек, стандартная библиотека языка C++ является довольно скромной. Существует много библиотек, предназначенных для решения следующих задач.

    • Графические пользовательские интерфейсы.

    • Сложные математические вычисления.

    • Доступ к базам данных.

    • Работа в сети.

    • XML.

    • Дата и время.

    • Система манипуляции файлами.

    • Трехмерная графика.

    1 ... 325 326 327 328 329 330 331 332 333 ... 337
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

    Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


    Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

    • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
    • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
    • 3. Просьба отказаться от нецензурной лексики.
    • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

    Надеемся на Ваше понимание и благоразумие. С уважением, администратор LoveRead.info.


    Установить VPN и читай слушай бесплатно

    Новые отзывы

    1. Людмила Хофман Людмила Хофман10 июнь 22:13 У меня перевернулся мир после прочтения ваших книг! Так приятно и чисто на душе, ведь по сути неважно кто с кем , а только любовь... Долгая игра - Рейчел Рид
    2. Анна Анна08 июнь 11:28 Спасибо за новую историю жизни и любви на сайте,прочитала с удовольствием .... Давай поженимся - Юлия Резник
    3. Елена Елена08 июнь 11:13 Прочла несколько романов этого, без сомнения, талантливого автора. Впечатление прекрасное, но хотелось бы когда-нибудь прочесть... Предатель. Ты врал мне годами - Арина Арская
    Все комметарии
    Новинки бесплатной онлайн библиотеки