Программирование >>  Аргументация конструирования 

1 ... 22 23 24 [ 25 ] 26 27 28 ... 108


Во втором цикле мы итеративно проходим по строке szSource, копируя каждый ее элемент, начиная с первого символа, в s г Та г get. Цикл заканчивается, когда sour-celndex указывает на нулевой символ строки szSource. Функция concatstring ()

присоединяет завершающий нулевой символ к результирующей строке, и она выводится на экран.

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

вы создаете программно. Если при отображении строки на экране в ее конце появились непонятные кракозябры или если программа почему-

то зависла, проверьте, не забыли ли вы добавить в строку этот волшебный нулевой символ.

Позаботьтесь о том, чтобы в первом символьном массиве хватило места для размещения результирующей объединенной строки. Следующие инструкции C++ выглядят весьма заманчиво:

char dash [ ] = ,-concatstring(dash, szMyName);

Однако корректно этот код работать не будет, потому что в массиве dash можно сохранить всего четыре символа. Поэтому функции St ring (> несомненно перейдет границы массива dash.

Функции C++ р1 со зок

Для работы со строками в C++ можно использовать стандартные библиотечные функции. Некоторые из них намного сложнее, чем может показаться с первого взгляда.

Вы можете написать собственные версии этих функций - например, в образовательных целях, как это было в случае с функцией объединения строк. Однако,

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

Таблиц 1. Функции, обрабатывающие строки

НАЗВАНИЕ ДЕЙСТВИЕ

int strlen(string)

Возвращает количество символов в строке (без учета

нулевого символа)

char* strcat (target.

source)

Присоединяет строку source к концу строки target

char* strcpy(target.

source)

Копирует строку source в target

char* strstr (sourcel

Находит первое вхождение строки source2

source2)

В source!

int strcmp(sourcel.

source2)

Сравнивает две строки

int stricmp(sourcel.

source2)

Сравнивает две строки без учета регистра символов

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

В программе Concatenate вызов функции concatString () можно было бы заменить вызовом стандартной функции C++ strcat (). Это избавило бы от необходимости написания собственного кода.

эти функции могут показаться неинтересными и простыми. Подумаешь, строка добавляется к концу другой! Собственную функцию concatstring О мы написали для того, чтобы на ее примере показать, как работают со строками стандартные функции C++.




Обработка символов типаисЬаг ь

В на каждую переменную стандартного типа char выделяется 8-битовое поле,

в котором можно представить 256 значений (от 0 до 255). Это 10 цифр, 26 строчных и 26 прописных букв. При этом остается более чем достаточно места для включения символов кириллицы.

Проблемы с этим типом возникают, когда необходимо включить в текст восточные алфавиты, особенно китайские и японские иероглифы. А в них символов, без преувеличения, тысячи, т.е. намного больше, чем можно представить в обычном 8-битовом множестве символов.

В C++ включена поддержка новейшего символьного типа wchart, или расширенного char. Хотя он не настолько оен в язык, как тип char, многие функции C++ позволяют работать с ним. Например, wstrstr() умеет сравнить два символь-н1х множества типа wchart. Если вы будете разрабатывать интернациональные приложения и захотите использовать восточные языки, вам понадобятся функции, которые работают с этим расширенным символьным типом. Но, так как этот вопрос намного сложнее, его подробное обсуждение выходит за рамки данной книги.

УаЩишение 1(апа(ге€ишх

C++ предоставляет набор низкоуровневых функций ввода и вывода. Наиболее часто используется функция printf, которая осуществляет вывод форматировапной

строки на устройство стандартного вывода. В простейшем варианте функции передается единственный аргумент - выводимая строка:

printf ( Строка для вывода на дисплей );

Функция printf может осуществлять управляемый вывод с помощью внедряем1х в строку команд управления форматом, начинающихся со знака Например, следующий фрагмент выводит строку со значениями целой и действительной переменных:

int nint = 1;

double doubleVar = 3.5;

printf( Целое значение равн %i;

действительное значение равно %t , nlnt, doubleVar);

Целое значение будет вставлено на мест*1, а действительное - на месте %f, и выводимая строка будет выглядеть следующим образом: Целое значение равно значение равно 3.5

Тем не менее в книге используется более простой и менее подверженный ошибкам со стороны программиста способ вывода с помощью потоков.



Глава 8

Первое знзмство с указателе в C++

вэ(ной главе...

Что такое адрес / Использование указателей Передача указателей функциям Использование кучи

й to сравпепию с другими языками С + + достаточно консервативен, он обладает 4 собственным уникальным синтаксисом, благодаря которому программы, работающие с большим количеством переменных, можно реализовать гораздо компактнее с помощью указателей. Указатель - это переменная, которая содержит адрес другой

переменной (т.е. ее расположение в памяти).

В этой главе представлены основы работы с указателями. Сначала рассматриваются концепции, с которыми необходимо обязательно ознакомиться для работы с указателями, затем поясняется синтаксис указателей и некоторые причины их высокой популярности в C++.

Шо fUucoe cufftec

Очевидно, что каждая переменная C + + расположена где-то в памяти компьютера. Память разбита на байты, каждый из которых имеет свой адрес - 0, 1, 2 и т.д.

Переменная intRandy может находиться ПО адресу 0x100, а floatReade - по адресу 0x180 (адреса в памяти принято записывать в [иестнадцатеричном виде).

Подобно людям, всякая переменная занимает некоторое место, более того по сравнению с другой переменной ей может понадобиться больше или меньше места (не будем вдаваться в подробности о том, кто и сколько места занимает). Количество памяти, выделяемое для переменных разных типов, приведено в табл. 8.1 (размер переменных приведен для процессора Pentium и компиляторов GNU C++ и Visual C+ + ).

Таблице. 1. Названия типов и их размеры в памяти

Тип ПНОЙ РАЗМЕР В ПАМ (В БААХ)

ir.t 4

long 4

float 4

double 8

В соответствии с этой написана тестовая программа, наглядно демонстри-

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

Layout - эта программа призвана дать читателю представление о



1 ... 22 23 24 [ 25 ] 26 27 28 ... 108

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика