Стефан Дэвис - С++ для чайников .

Тут можно читать онлайн Стефан Дэвис - С++ для чайников . - бесплатно полную версию книги (целиком) без сокращений. Жанр: sci_tech, издательство Издательский дом Вильямс. Компьютерное издательство Диалектика, год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    С++ для чайников .
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом Вильямс. Компьютерное издательство Диалектика
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    0-7645-6852-3, 978-5-8459-0723-3
  • Рейтинг:
    4/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Стефан Дэвис - С++ для чайников . краткое содержание

С++ для чайников . - описание и краткое содержание, автор Стефан Дэвис, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
empty-line
1
empty-line
4

С++ для чайников . - читать онлайн бесплатно полную версию (весь текст целиком)

С++ для чайников . - читать книгу онлайн бесплатно, автор Стефан Дэвис
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Второй путь связан с использованием так называемых манипуляторов. ( Звучит страшновато, не так ли? ) Манипуляторы — это объекты, определённые в заголовочном файле iomanip.h , которые приводят к тому же эффекту, что и описанные выше функции-члены ( чтобы иметь возможность пользоваться манипуляторами, вы должны не забыть включить iomanip.h в программу ). Единственное преимущество манипуляторов в том, что программа может включать их прямо в поток, не прибегая к вызову отдельной функции.

Если вы перепишете предыдущий пример так, чтобы в нём использовались манипуляторы, программа будет иметь следующий вид:

#include

#include

void fn( float interest , float dollarAmount )

{

cout << "Сумма в долларах = " ;

<< setprecision( 2 )<< dollarAmount

<< setprecision( 4 )<< interest

<< "\n" ;

}

Наиболее распространённые манипуляторы и их назначение приведены в табл. 24.4.

Таблица 24.4. Основные манипуляторы и функции управления форматом потока

_________________

Манипулятор — Функция-член — Описание

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

dec — flags( 10 )— Перейти в десятичную систему счисления

hex — flags( 16 )— Перейти в шестнадцатеричную систему счисления

oct — flags( 8 )— Перейти в восьмеричную систему счисления

setfill( с ) — fill( c )Установить символ заполнения с

setprecision( с ) — precision( с )— Установить количество отображаемых знаков после запятой в с

setw( n ) — width( n )— Установить ширину поля равной n символов*

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

_________________

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

Внимательно следите за параметром ширины поля функцияwidth n либо - фото 312

«Внимательно следите за параметром ширины поля ( функцияwidth( n ) либо манипуляторsetw( n ) ). Большинство параметров сохраняют своё значение до тех пор, пока оно не будет изменено новым вызовом, однако для параметра ширины поля это не так. Этот параметр возвращается к значению по умолчанию, как только будет выполнен следующий вывод в поток. Например, приведённый ниже фрагмент кода не выведет два целочисленных значения длиной в 8 символов.»

[ Атас! ]

_________________

288 стр. Часть 5. Полезные особенности

#include

#include

void fn( )

{

cout << setw( 8 )/* ширина поля равна 8... */

<< 10 /* ...для 10 , но... */

<< 20 /* для 20 равна значению по умолчанию */

<< "\n" ;

}

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

#include

#include

void fn( )

{

cout << setw( 8 )/* установить ширину... */

<< 10

<< setw( 8 )

<< 20 /* ...обновить её */

<< "\n" ;

}

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

Какой же метод лучше — с использованием манипуляторов или функций? Функции-члены предоставляют больше контроля над свойствами потока — хотя бы потому, что их больше. Кроме того, функции-члены обязательно возвращают предыдущее значение изменяемого параметра, так что у вас всегда есть возможность восстановить прежнее значение параметра. И наконец, существуют версии этих функций, позволяющие узнать текущее значение параметра, не изменяя его. Использование этой возможности показано в приведённом ниже примере.

#include

void fn( float value )

{

int previousPrecision ;

/* Вы можете узнать текущую точность так: */

previousPrecision = cout.precision( ) ;

/* Можно также сохранить старое значение, одновременно изменяя его на новое */

previousPrecision = cout.precision( 2 ) ;

cout << value ;

/* Восстановим предыдущее значение */

cout.precision( previousPrecision ) ;

}

Несмотря на все преимущества "функционального" подхода, манипуляторы более распространены; возможно, это просто потому, что они "круче" выглядят. Используйте то, что вам больше нравится, но в чужом коде будьте готовы увидеть оба варианта.

_________________

289 стр. Глава 24. Использование потоков ввода-вывода

Глава 25. ОБРАБОТКА ОШИБОК И ИСКЛЮЧЕНИЯ...290

ОГЛАВЛЕНИЕ

В этой главе...

►Зачем нужен новый механизм обработки ошибок 291

►Механизм исключительных ситуаций 293

►Так что же мы будем бросать? 295

Трудно с этим смириться, но факт остаётся фактом: иногда функции работают неправильно. Традиционно вызывающей программе сообщается об ошибке посредством возвращаемого функцией значения. Однако язык С++ предоставляет новый, улучшенный механизм выявления и обработки ошибок с помощью исключительных ситуаций, или просто исключений ( exceptions). Исключение — это отступление от общего правила, т.е. случай, когда то или иное правило либо принцип неприменимы. Можно дать и такое определение: исключение — это неожиданное ( и, надо полагать, нежелательное ) состояние, которое возникает во время выполнения программы.

Механизм исключительных ситуаций базируется на ключевых словах try ( попытаться, пробовать, попытка [ trai ] [трай] ), throw ( бросить, бросание, бросок [ θrou ] [сроу] ) и catch ( поймать, схватить, ловить [ kætʃ ] [кэчь] ). В общих чертах этот механизм работает так: функция пытается ( пробует — try ) выполнить фрагмент кода. Если в коде содержится ошибка, функция бросает ( генерирует — throw ) сообщение об ошибке, которое должна поймать ( перехватить — catch ) вызывающая функция. Это продемонстрировано в приведённой ниже программе.

//

/* FactorialException — демонстрация исключений */

/* при использовании факториала */

//

#include

#include

#include

#include

using namespace std ;

/* factorial — вычисление факториала */

int factorial( int n )

{

/* Функция не обрабатывает отрицательные значения аргумента */

if ( n < 0 )

{

throw string( "Аргумент отрицателен" ) ;

}

/* Вычисляем факториал */

int accum = 1 ;

while ( n > 0 )

{

accum *= n ;

_________________

290 стр. Часть 5. Полезные особенности

n-- ;

}

return accum ;

}

int main( int nNumberofArgs , char* pszArgs[ ] )

{

/* печать кириллицы, если Вы не установите программки gccrus.exe и g++rus.exe */

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стефан Дэвис читать все книги автора по порядку

Стефан Дэвис - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




С++ для чайников . отзывы


Отзывы читателей о книге С++ для чайников ., автор: Стефан Дэвис. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x