Описание

Эта книга – практическое руководство для программистов на C++. Эксперты предлагают готовые рецепты решения повседневных задач, охватывая темы, от работы с датой и временем до обработки исключений и синтаксического анализа XML. В ней вы найдете решения для распространенных проблем, сэкономьте время и сосредоточитесь на собственных задачах. Книга написана авторами, имеющими богатый опыт в разработке библиотек C++ с открытым исходным кодом, включая создателя библиотеки Boost Iostreams. Предполагается базовые знания C++ и объектно-ориентированного программирования.

<p>C++</p><p>Сборник рецептов</p><p>Предисловие</p>

C++ работает практически на любой платформе и используется в бесчисленном количестве приложений. Если вы купили или собираетесь купить эту книгу, вы, вероятно, являетесь программистом, инженером или исследователем, пишущим одно из таких приложений. Но независимо от того, что и для какой платформы вы пишете, велика вероятность, что вам придется снова решать многие из тех же проблем, которые уже решены другими программистами на C++ много лет назад. В этой книге мы будем решать многие из часто встречающихся проблем и объяснять каждое из решений.

Независимо от того, программируете ли вы на C++ уже много лет или используете его недавно, вы, скорее всего, знакомы с фрагментами, которые приходится переписывать для каждого нового проекта: арифметика и синтаксический анализ дат и времени, манипуляции со строками и текстом, работа с файлами, синтаксический анализ XML, использование стандартных контейнеров и т.п. Решения для всех таких проблем приведены в этой книге. Для некоторых случаев (например, арифметические операции с датами и временем) стандартная библиотека почти не содержит поддержки. Для других (например, работа со строками) стандартная библиотека содержит функционально богатые классы, но они не могут делать все, и решения некоторых очень часто встречающихся задач оказываются громоздкими.

Формат очень прост. Каждый рецепт содержит описание проблемы и код решения, а большинство содержит последующее обсуждение. Мы попытались быть прагматиками и решать проблемы, не слишком отклоняясь от цели, но во многих случаях имеются связанные проблемы, решение которых также очень полезно (или просто интересно), и мы приводим одну или две страницы пояснений.

Эта книга посвящена решению общих проблем с С++, но не является книгой для изучения С++. Мы предполагаем, что вы, по крайней мере, обладаете базовыми знаниями C++ и объектно-ориентированного программирования. В частности, будет полезно, если вы знакомы, по крайней мере, с:

• наследованием и виртуальными функциями С++;

• стандартной библиотекой;

• компонентами Standard Template Library (стандартной библиотекой шаблонов) (контейнерами, итераторами и алгоритмами);

• шаблонами.

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

О примерах

При создании наших примеров кода мы стремились к простоте, переносимости и производительности. Разработка каждого решения использовала сходный метод: если возможно, использовался стандартный C++ (язык или библиотека); если невозможно, то в качестве замены использовался стандарт де-факто. Например, многие из рецептов, относящихся к строкам, применяют стандартный класс string, а большинство математических и научных рецептов используют стандартные численные типы, контейнеры и шаблоны. Стандартная библиотека имеет мощную поддержку в этих областях, так что стандартных возможностей более чем достаточно. Однако C++ либо имеет слабую стандартную поддержку, либо не имеет ее вовсе в части многопоточности или синтаксического анализа XML. Таким образом, мы используем поддержку многопоточности, предоставляемую библиотекой Boost Threads, а для функциональности синтаксического анализа XML-парсер (parser) Xerces.

Часто в C++ имеется множество способов сделать одно и то же, что дает разработчикам определенную гибкость, но и приводит к спорам. Большая часть примеров иллюстрирует наилучшее общее решение, которое мы смогли найти, но это не означает, что не существует еще лучшего решения. Если есть альтернативные решения, которые оказываются лучшими в одних случаях, но не являются таковыми в других (возможно, решение, использующее стандартную библиотеку, некрасиво или неинтуитивно — в этом случае мы показываем альтернативное решение с использованием Boost), мы представляем альтернативные решения, чтобы показать вам различные имеющиеся решения.

Большое количество примеров используют шаблоны. Если у вас нет опыта в написании шаблонов, вам следует получить его как можно скорее. В этой книге очень мало вводного материала по шаблонам, за исключением двух рецептов в главе 8: 8.11 и 8.12. Большая часть интересных разработок на C++ относится к области метапрограммирования с использованием шаблонов и методического проектирования.

В момент написания этой книги в сообществе C++ происходят большие изменения. Первый технический отчет (называемый TR1) более или менее стабилен. Он стандартизирует набор функций, которые будут добавлены в следующую версию стандарта С++. Не существует требования поддержки его реализациями стандартной библиотеки, но многие поставщики уже начали реализовывать TR1, и можно ожидать, что скоро эти функции появятся в поставляемых компиляторах. Многие из библиотек из TR1 впервые появились в проекте Boost.

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

1С: Бухгалтерия 8 с нуля

Алексей Анатольевич Гладкий

Овладейте программой 1С:Бухгалтерия 8 с помощью этого исчерпывающего руководства. Книга детально описывает все аспекты работы с программой, от ввода данных до формирования отчетов. Вы научитесь автоматизировать основные участки бухгалтерии: учет наличных и безналичных средств, основных средств, товарно-материальных ценностей, зарплаты и производства. Подробные уроки с примерами помогут вам быстро освоить все функции программы. Эта книга – ваш надежный помощник в освоении 1С:Бухгалтерия 8.

1С: Управление торговлей 8.2

Алексей Анатольевич Гладкий

Современные торговые предприятия сталкиваются с огромным количеством задач: управление широким ассортиментом товаров, различными условиями продаж (предоплата, скидки), категориями клиентов (VIP, постоянные), складскими операциями, сертификацией и инвентаризацией. Эта книга посвящена автоматизации торговой деятельности с помощью популярного программного продукта "1С: Управление Торговлей 8.2". Вы узнаете, как эффективно использовать возможности программы для управления запасами, закупками, продажами, финансами и маркетингом. Подробно рассматриваются функциональные возможности, особенности работы с информационными базами и пользовательским интерфейсом. Идеальное руководство для начинающих пользователей, стремящихся освоить работу с программой "1С: Управление Торговлей 8.2" и повысить эффективность своего бизнеса.

200 лучших программ для Интернета. Популярный самоучитель

Илья Краинский

Эта книга – ваш путеводитель в мир программ для Интернета. Вы узнаете о широком спектре утилит, от почтовых клиентов до браузеров, менеджеров загрузок и антивирусных программ. Познакомьтесь с альтернативами стандартным приложениям Windows, которые помогут вам эффективно использовать Интернет для общения, поиска информации, скачивания файлов и многого другого. Узнайте, как оптимизировать свою работу в Сети, защитить свой компьютер от угроз и использовать дополнительные сервисы Интернета. Книга содержит подробные описания программ, их функциональные возможности и практические советы.

300 лучших программ на все случаи жизни

Виталий Петрович Леонтьев, Виталий Леонтьев

Эта книга – ваш надежный гид в мире программного обеспечения. Она содержит обзор 300 лучших программ, охватывающих широкий спектр задач: от офисных приложений до системных утилит, графики, музыки, видео, обработки звука, браузеров, почты и антивирусов. В книге вы найдете подробные описания, сравнения и рекомендации по выбору программ, что поможет вам найти оптимальное решение для любой задачи. Книга предназначена для пользователей с разным уровнем опыта, от новичков до профессионалов. Она поможет вам эффективно работать на компьютере, используя самые актуальные и полезные программы.