- •Управление esc – последовательность (с примерами)
- •4. Определение констант и их характеристика (const,define,enum)
- •5. Форматные потоки в с. Функции fPrintf(), Fscanf(), и модификации (с примерами). Спецификаторы
- •7. Перегруженные операции.
- •8. Инструкция ветвления. (пример)
- •9. Инструкция switch()
- •10. Применение инструкции switch() для создания текстового меню.
- •11. Инструкция цикла.
- •12. Инструкция перехода.
- •13. Указатели. Операции над указателями. Косвенная адресация.
- •14. Ссылки (пример)
- •15. Статические числовые одномерные
- •16. Статические числовые двумерные массивы.
- •17. Динамическая память.
- •18. Выделение памяти под динамический одномерный и двумерный массив.
- •19. Алгоритм удаления и добавления данных в массив.
- •20. Глобальные, локальные, статические, внешние переменные.
- •21. Классы памяти.
- •22. Формальные и фактические параметры.
- •23. Функции.
- •24. Виды передачи параметров в функцию.
- •25.Функции и массивы
- •26. Функции с переменным числом параметров.
- •27. Шаблоны функции.
- •28.Рекурсии. Фреймы.
- •29. Функция Main()
- •30. Стеки.
- •31. Очереди.
- •33. Строки, как массив символов.
- •34. Функции ввода строковых переменных.
- •35.Основные функции обработки строковых переменных.
- •37. Функции преобразования типов.
- •38. Строки типа string.
- •40. Функции работы с памятью. Memcmp - сравнивает две области памяти
- •41. Структуры
- •42. Вложенные структуры.
- •43. Объединения (union)
- •44.Передача переменных определенных пользователем в функцию.
- •50. Функция определения конца файла.
- •51. Файловый поток.
- •52. Функции tellg и ftell
- •53. Установка файлового указателя
- •55. Обработка текстовых файлов.
- •56. Бинарный файл.
5. Форматные потоки в с. Функции fPrintf(), Fscanf(), и модификации (с примерами). Спецификаторы
int printf(string format [, mixed args])
string sprintf(string format [, mixed args])
Эти две функции предназначены для форматного вывода и что отличаются они тем, что функция printf() производит форматирование и выводит результаты в выходной поток (браузер или консоль), а sprintf() после осуществления требуемого форматирования просто возвращает строку.
С одной стороны этими функциями можно пользоваться просто как функциями вывода:
<?
printf("Hello!"); // выводит "Hello!"
sprintf("Hello!"); // сама по себе ничего не выводит,
$str = sprintf("Hello!"); // а просто возвращает строку,
printf($str); // которую затем можно вывести в выходной поток
?>
Но использовать их только так, как мы сейчас продемонстрировали – простое расточительство, так как эти функции способны на большее. Дело в том, что аргумент format этих функций представляет собой строку, содержащую специальные символы, использующиеся при форматировании данных, содержащихся в списке аргументов. Эти спецсимволы называются спецификаторами преобразования, а символы, которые остаются неизменными при форматировании строки, называют директивами.
Спецификация определяется символом "%", за которым может следовать до пяти спецификаторов в следующем порядке:
Спецификатор заполнения
Устанавливает символ, которым строка заполняется до заданного размера. По умолчанию используется пробел. Спецификатор заполнения действует только при наличии спецификатора минимальной ширины
Спецификатор выравнивания
По умолчанию дополнение строки до минимальной ширины производится с левого края (т.е., строка выравнивается по правому краю). Если добавлен символ дефиса, то строка выравнивается по левому краю
Спецификатор минимальной ширины
Представляет собой целое число, задающее минимальный размер форматированной строки. Если переданная строка меньше, то она дополняется символами, указанными в спецификаторе заполнения
Спецификатор точности
Предназначен для указания количества десятичных знаков в представлении чисел с плавающей точкой. При применении этого спецификатора для форматирования строк, он определяет максимальное количество символов, которое нужно взять из переданной строки
спецификатор типа
Этот спецификатор предназначен для указания типа данных, которые переданы в качестве аргумента. Спецификатор может принимать одно из следующих значений:
b – целое число, представляемое в двоичном виде;
с – целое число, представляемое в виде символа с тем же ASCII кодом;
d – целое число, представляемое в десятичном виде;
f – число с плавающей точкой, представляемое в виде десятичной дроби;
o – целое число, представляемое в восьмеричном виде;
s – строка;
x – целое число, представляемое в шестнадцатеричном виде в нижнем регистре;
X – целое число, представляемое в шестнадцатеричном виде в верзнем регистре
Теперь, после разговора о спецификаторах типа, выведем с помощью функции printf() строку в формате даты dd/mm/yyyy. Следующий код выводит в результате строку "02/03/2003":
<?
$day = 2;
$month = 3;
$year = 2003;
printf("%02d/%02d/%04d", $day, $month, $year);
?>
6. Манипуляторы ввода вывода в С++
Манипуляторы служат для форматирования потока ввода/вывода, а пользовательский ввод считывает данные в поток ну и вывод выводит данные из потока
setw(количество_позиций_для_вывода_числа)
setfil(символ_для_заполнения_пустых_позиций)
setprecision (точность_при_выводе_дробного_числа)
Наряду с перечисленными выше манипуляторами в С++ используются также манипуляторы setiosflags() и resetiosflags() для установки определенных глобальных флагов, используемых при вводе и выводе информации. На эти флаги ссылаются как на переменные состояния. Функция setiosflags() устанавливает указанные в ней флаги, а resetiosflags() сбрасывает (очищает) их. В приведенной ниже таблице показаны аргументы для этих функций.
Таблица 1
ios::skipws Игнорирует пустое пространство при вводе
ios::left Вывод с выравниванием слева
ios::right Вывод с выравниванием справа
ios::internal Заполнять пространство после знака или основания с/с
ios::dec Вывод в десятичном формате
ios::oct Вывод в восьмеричном формате
ios::hex Вывод в шестнадцатеричном формате
ios::boolalpha Вывод булевых значений в виде TRUE и FALSE
ios::showbase Выводить основание системы счисления
ios::showpoint Выводить десятичную точку
ios::uppercase Выводить шестнадцатеричные числа заглавными буквами
ios::showpos Выводить + перед положительными целыми числами
ios::scientific Использовать форму вывода с плавающей запятой
ios::fixed Использовать форму вывода с фиксированной запятой
iоs::unitbuf Сброс после каждой операции вывода
ios::sktdio Сброс после каждого символа
Как видно из таблицы, флаги формата объявлены в классе ios.
Пример программы, в которой использованы манипуляторы:
#include <iostream.h>
#include <iomanip.h>
void main()
{ char s[]="БГУИР факультет КСиС";
cout << setw(30) << setiosflags(ios::right) << s << endl;
cout << setw(30) << setiosflags(ios::left) << s << endl;}
Например,
cout << 1234 << ' '
<< hex << 1234 << ' '
<< oct << 1234 << endl; напечатает
1234 4d2 2322 и
cout << setw(4) << setfill('#') << '(' << 12 << ")\n";
cout << '(' << 12 << ")\n"; напечатает
(##12)
(12)