Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Листинг 16.14. Установка флагов с ппмощью setf
1: // Листинг 16.14. Использование функции setf 2: #include < iostream.h> 3: #include < iomanip.h> 4: 5: int main() 6: { 7: const int number = 185; 8: cout < < " The number is " < < number < < endl; 9: 10: cout < < " The number is " < < hex < < number < < endl; 11: 12: cout.setf(ios:: showbase); 13: cout < < " The number is " < < hex < < number < < endl; 14: 15: cout < < " The number is "; 16: cout.width(10); 17: cout < < hex < < number < < endl; 18: 19: cout < < " The number is "; 20: cout.width(10); 21: cout.setf(ios:: left); 22: cout < < hex < < number < < endl; 23: 24: cout < < " The number is "; 25: cout.width(10); 26: cout.setf(ios:: internal); 27: cout < < hex < < number < < endl; 28: 29: cout < < " The number is: " < < setw(10) < < hex < < number < < endl; 30: return 0; 31: }
Результат: The number is 185 The number is b9 The number is 0xb9 The number is 0xb9 The number is 0xb9 The number is 0x b9 The number is 0x b9
Анализ: В строке 7 целочисленная константа number инициируется значением 185, которое выводится на экран в строке 8. Это же значение выводится строкой 10, однако, поскольку здесь задействован манипулятор hex, оно отображается в шестнадцатеричном формате как b9. (Числу b в шестнадцатеричном коде соответствует 11 в десятичном. Умножение 11 на 16 дает 176. Добавив 9, получаем десятичное значение 185.) В строке 12 установлен флаг showbase, что приводит к добавлению префикса 0x ко всем шестнадцатеричным значениям. В строке 16 ширина поля устанавливается равной 10. Поэтому выводимое значение сдвинуто вправо. В строке 20 ширина также устанавливается равной 10, однако применяется выравнивание влево. Этот момент хорошо виден в выводе программы. В строке 25 ширина остается равной 10, однако применяется выравнивание по ширине поля. Поэтому 0x вводится по левому краю поля, а b9 — по правому. Наконец, в строке 29 повторяются те же установки, но в этот раз функция setw() используется не в отдельной строке, а в паре с оператором вывода (< <). Результат получается тот же.
Сравнение потоков и функции printf()
Большинство версий компиляторов C++ включают также стандартные библиотеки ввода-вывода языка С, позволяющие использовать для этого функцию printf(). Хотя использовать printf() немного проще, чем cout, применять ее не желательно. Функция printf() не обеспечивает должного контроля за типами данных, поэтому можно легко ошибиться и отобразить число как символ или символ как число. Кроме того, функция printf() не поддерживает классы, поэтому ее трудно использовать для вывода данных объектов классов. Приходится задавать каждый член класса для p г i n t f () в отдельности. С другой стороны, эта функция значительно упрощает форматирование выводимых данных, так как позволяет вставлять спецификаторы форматирования в качестве параметров функции. Поскольку функция printf() все еще эффективно применяется в некоторых программах и пользуется популярностью у многих программистов, этот раздел посвятим краткому обзору ее использования. Для использования функции printf() необходимо включить в программу файл заголовка stdio.h. В самой простой форме функция printf() принимает в качестве параметра строку для форматированного вывода в виде текста, взятого в кавычки. Перед строкой могут быть установлены самые различные наборы спецификаторов форматирования. В табл. 16.1 показаны наиболее часто используемые спецификаторы преобразований типов, начинающиеся всегда с символа %. Ошибка! Недопустимый объект гиперссылки. 16.1. Спецификаторы преобразования типов
Каждый спецификатор преобразования может также дополняться установкой общего числа знаков в выводимом значении и числа знаков после десятичной запятой. Эта установка имеет вид десятичного значения с плавающей точкой, где символы слева от точки устанавливают общее число знаков в выводимых значениях, а символы справа — число знаков после запятой. Например, спецификатор %5d задает вывод целочисленного значения длиной 5 знаков, а %15.5f — вывод числа с плавающей запятой общей длиной в 15 знаков, пять из которых составляют дробную часть. Различные способы использования printf() показаны в листинге 16.15. Листинг 16.15. Вывод данных с помощью фцнкции printf() 1: #include < stdio.h> 2: int main() 3: { 4: printf(" %s", " hello world\n"); 5: 6: char *phrase = " Hello again! \n"; 7: printf(" %s", phrase); 8: 9: int x = 5; 10: printf(" %d\n", x); 11: 12: char *phraseTwo = " Here's some values: "; 13: char *phraseThree = " and also these: "; 14: int у = 7, z = 35; 15: long longVar = 98456; 16: float floatVar = 8.8f; 17: 18: printf(" %s %d %d %s %ld %f\n", phraseTwo, y, z, phraseThree, longVar, floatVar); 19: 20: char *phraseFour = " Formatted: "; 21: printf(" %s %5d %10d %10.5f\n", phraseFour, y, z, floatVar); 22: return 0; 23: }
Результат: hello world Hello again! Here's some values: 7 35 and also these: 98456 8.800000 Formatted: 7 35 8.800000
Анализ: Первый раз функция printf() вызывается в строке 4 и имеет стандартную форму: за именем функции printf следует спецификатор преобразования (в данном случае %s) и константная строка в кавычках, выводимая на экран. Спецификатор %s указывает, что в данный момент выводится текстовая' строка, указанная далее, — " hello world". Второй вызов функции printf в строке 7 аналогичен первому, но в данном случае вместо константной строки, заключенной в кавычки, используется указатель типа char. В третьем вызове printf() в строке 10 используется спецификатор вывода целочисленного значения, хранимого в переменной x. Еще более сложным оказывается четвертый вариант вызова функции printf(), показанный в строке 18. Здесь выводится сразу шесть значений. Каждому приведенному спецификатору отвечает свое значение, отделенное от остальных с помощью запятых. Наконец, в строке 21 в уже хорошо известной вам функции printf() используются спецификаторы форматирования, определяющие длину и точность выводимых значений. Многие считают, что форматирование вывода данных с помощью спецификаторов функции printf() намного проще, чем с помощью манипуляторов объекта cout. Ранее уже отмечались основные недостатки функции printf() — отсутствие строгого контроля за типами данных и невозможность объявления этой функции как друга или метода класса. Поэтому при необходимости распечатать данные различных членов класса нужно использовать явно заданные методы доступа к членам класса.
|