![](/user_photo/2706_HbeT2.jpg)
- •6 Глава 1
- •12 Глава 1
- •14 Глава 1
- •16 Глава 1
- •18 Глава 1
- •20 Глава 1
- •22 Глава 1
- •24 Глава 1
- •26 Глава 1
- •31 Глава 1
- •34 Глава 2
- •36 Глава 2
- •Puc. 2.4. Дополнительные опции консольного приложения Win32
- •38 Глава 2
- •40 Глава 2
- •42 Глава 2
- •44 Глава 2
- •48 Глава 2
- •50 Глава 2
- •52 Глава 2
- •54 Глава 2
- •56 Глава 2
- •58 Глава 2
- •60 Глава 2
- •62 Глава 2
- •64 Глава 2
- •66 Глава 2
- •68 Глава 2
- •70 Глава 2
- •74 Глава 2
- •76 Глава 2
- •79 Глава 2
- •82 Глава 2
- •84 Глава 2
- •86 Глава 2
- •88 Глава 2
- •92 Глава 2
- •94 Глава 2
- •96 Глава 2
- •98 Глава 2
- •103 Глава 2
- •105 Глава 2
- •107 Глава 2
- •110 Глава 2
- •115 Глава 3
- •119 Глава 3
- •121 Глава 3
- •123 Глава 3
- •125 Глава 3
- •129 Глава 3
- •131 Глава 3
- •133 Глава 3
- •139 Глава 3
- •141 Глава 3
- •143 Глава 3
- •145 Глава 3
- •148 Глава 3
- •150 Глава 3
- •155 Глава 3
- •165 Глава 4
- •168 Глава 4
- •170 Глава 4
- •173 Глава 4
- •175 Глава 4
- •178 Глава 4
- •184 Глава 4
- •186 Глава 4
- •188 Глава 4
- •190 Глава 4
- •192 Глава 4
- •194 Глава 4
- •198 Глава 4
- •201 Глава 5
- •203 Глава 5
- •205 Глава 5
- •207 Глава 5
- •213 Глава 5
- •217 Глава 5
- •219 Глава 5
- •221 Глава 5
- •223 Глава 5
- •225 Глава 5
- •227 Глава 5
- •232 Глава 5
- •234 Глава 5
- •236 Глава 5
Позднее,
когда мы будем говорить о классах, вы
узнаете больше об используемом
здесь
синтаксисе. А пока примем, его как
данность и применим в примере.
168 Глава 4
Введите строку не длиннее 80 символов: Радиация погубит ваши гены
Строка "Радиация погубит ваши гены" содержит 2 6 символов.
Описание полученных результатов
Эта программа объявляет символьный массив buffer и читает символьную строку в этот массив с клавиатуры после вывода приглашения на ввод. Чтение с клавиатуры прекращается, когда пользователь нажимает <Enter>, или после того, как прочитано МАХ-1 символов.
Цикл while используется для подсчета количества прочитанных символов. Цикл продолжается до тех пор, пока текущий символ, находящийся в buffer [count], не равен 1 \ 0 '. Такая проверка текущего символа при проходе по элементам массива ча- сто применяется в "родном" С++. Единственным действием, выполняемым в цикле, является инкремент значения счетчика count для каждого ненулевого символа.
Существует
также библиотечная функция strlen
(),
которая избавляет вас от са-
мостоятельного
кодирования при подсчете символов
строки. Если вы хотите ее ис-
пользовать,
то должны включить в свою программу
заголовочный файл <cstring>
с
помощью
директивы:
Буква "с" в имени заголовочного файла говорит о том, что этот файл содержит определения, относящиеся к библиотеке языка С, которая является частью библио-
Массивы,
строки
и
указатели
теки С++. Этот заголовок также содержит функцию wcsnlen (), возвращающей длину строки широких символов.
Используя функцию strlen (), вы можете заменить цикл while следующим опе- ратором:
Аргументом служит имя массива, содержащего строку, а возвращает функция strlen () длину этой строки в виде целочисленного значения типа size_t. Многие функции стандартной библиотеки возвращают значение типа size_t, а сам тип size_t определен в стандартной библиотеке с помощью оператора typedef как эк- вивалент одного из фундаментальных типов, обычно — unsigned int. Причина при- менения size_t вместо непосредственного использования фундаментального типа связана с тем, что это обеспечивает гибкость в том, что действительный тип, скрыва- ющийся за псевдонимом size_t, может определяться конкретной реализацией С++. Стандарт С++ разрешает варьировать диапазоны допустимых значений фундаменталь- ных типов для наилучшего соответствия аппаратной архитектуре, и sizet может быть определено как эквивалент наиболее подходящего типа в текущем аппаратном окружении.
В конце примера введенная строка и количество ее символов отображаются един- ственным оператором вывода. Обратите внимание на применение управляющей по- следовательности * \ " ' для вывода двойной кавычки.
Многомерные массивы
Массивы, которые мы определяли до сих пор, имеют один индекс и называются одномерными массивами. Но массив может иметь и более одного индексного зна- чения — в этом случае он называется многомерным массивом. Предположим, что у вас есть поле, на котором расположена плантация бобов, по 10 растений на грядке, и это поле содержит 12 таких грядок (то есть всего имеется 120 единиц растений). Вы можете объявить массив для записи веса бобов, собранных от каждого растения, ис- пользуя следующий оператор:
Здесь объявляется двумерный массив beans, где первый индекс — номер грядки, а второй — номер растения на грядке. Чтобы обратиться к любому конкретному эле- менту, необходимо указать два индекса. Например, вы можете установить значение элемента, соответствующего пятому растению в третьей грядке, следующим операто- ром:
Напомним, что значения индексов начинаются с нуля, поэтому значение индекса третьей грядки — 2, а индекс пятого растения — 4.
Будучи успешным бобовым фермером, вы можете иметь несколько таких полей, засеянных бобами по тому же шаблону. Предполагая, что у вас 8 полей, можно опре- делить трехмерный массив для записи данных об урожае следующим образом:
Такая запись позволяет организовать учет каждого растения, растущего на всех этих полях, причем самый левый индекс ссылается на определенное поле. Если вы когда-нибудь займетесь выращиванием бобов в международном масштабе, то сможете использовать четырехмерный массив, где дополнительное измерение будет обозна-