Читаем Программирование. Принципы и практика использования C++ Исправленное издание полностью

Почти все операции ввода описаны в заголовке , за исключением операций ввода в объект класса string; эти операции описаны в заголовке :

Если не указано иное, операция ввода возвращает ссылку на объект класса istream, поэтому можно создавать цепочки таких операций, например cin>>x>>y;.

Функции get() и getline() помещают после символов, записанных в ячейки p[0] и т.д., число 0 (если символы были введены); функция getline() удаляет признак конца ввода (t из потока ввода, если он обнаружен, а функция get() этого не делает. Функция read(p,n) не записывает число 0 в массив после считанных символов. Очевидно, что операторы форматированного ввода проще в использовании и менее уязвимы для ошибок, чем операции неформатированного ввода.

<p id="AutBody_Root674"><strong>Б.7.4. Операции вывода</strong></p>

Почти все операции вывода описаны в заголовке , за исключением операции записи в объекты класса string; такие операции описаны в заголовке .

Если не указано иное, операции вставки в поток ostream возвращают ссылку на его объекты, поэтому можно создавать цепочки операций вывода, например cout << x<;.

<p id="AutBody_Root675"><strong>Б.7.5. Форматирование</strong></p>

Формат потока ввода-вывода управляется комбинацией типа объекта, состояния потока, информацией о локализации (см. раздел ) и явными операциями. Большая часть информации об этом изложена в главах 10-11. Здесь мы просто перечислим стандартные манипуляторы (операции, модифицирующие поток), поскольку они обеспечивают наиболее простой способ изменения формата.

Вопросы локализации выходят за рамки рассмотрения настоящей книги.

<p id="AutBody_Root676"><strong>Б.7.6. Стандартные манипуляторы</strong></p>

В стандартной библиотеке предусмотрены манипуляторы, соответствующие разнообразным изменениям формата. Стандартные манипуляторы определены в заголовках , , , и (для манипуляторов, получающих аргументы).

Каждая из этих операций возвращает ссылку на свой первый операнд потока s.

Рассмотрим пример.

cout << 1234 << ',' << hex << 1234 << ',' << oct << 1234 << endl;

Этот код выводит на экран следующую строку:

1234,4d2,2322

В свою очередь, код

cout << '(' << setw(4) << setfill('#') << 12 << ") (" << 12 << ")\n";

выводит на экран такую строку:

(##12) (12)

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

b.setf(ios_base::fmtflags(0),ios_base::floatfield)

См. главу 11.

<p id="AutBody_Root677"><strong>Б.8. Манипуляции строками</strong></p>

В стандартной библиотеке предусмотрены операции классификации символов в заголовке , строки с соответствующими операциями в заголовке , регулярные выражения в заголовке (C++0x) и поддержка С-строк в заголовке .

<p id="AutBody_Root678"><strong>Б.8.1. Классификация символов</strong></p>

Символы из основного набора могут быть классифицированы так, как показано ниже.

Кроме того, в стандартной библиотеке описаны две полезные функции для изменения регистра символа.

Расширенные наборы символов, такие как Unicode, также поддерживаются стандартной библиотекой, но эта тема выходит за рамки рассмотрения настоящей книги.

<p id="AutBody_Root679"><strong>Б.8.2. Строки</strong></p>

Класс string из стандартной библиотеки представляет собой специализацию общего шаблонного класса basic_string для символьного типа char; иначе говоря, объект string — это последовательность переменных типа char.

<p id="AutBody_Root680"><strong>Б.8.3. Сравнение регулярных выражений</strong></p>

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

Поиск (searching) строки, соответствующей регулярному выражению в (произвольно длинном) потоке данных, — обеспечивается функцией regex_search().

Сопоставление (matching) регулярного выражения со строкой (известного размера) — обеспечивается функцией regex_match().

Замена соответствий (replacement of matches) — обеспечивается функцией regex_replace(); в данной книге не описывается; см. профессиональные учебники или справочники.

Результатом работы функций regex_search() и regex_match() является коллекция соответствий, как правило, представленных в виде объекта класса smatch.

regex row("^[\\w ]+(\\d+)(\\d+)(\\d+)$"); // строка данных

while (getline(in,line)) { // проверка строки данных

  smatch matches;

  if (!regex_match(line, matches, row))

  error("bad line", lineno);

  // проверка строки:

  int field1 = from_string(matches[1]);

Перейти на страницу:

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

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

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

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

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

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

Финансы / Программирование, программы, базы данных