|
Программирование >> Аргументация конструирования
Во втором цикле мы итеративно проходим по строке szSource, копируя каждый ее элемент, начиная с первого символа, в s г Та г get. Цикл заканчивается, когда sour-celndex указывает на нулевой символ строки szSource. Функция concatstring () присоединяет завершающий нулевой символ к результирующей строке, и она выводится на экран. забывайте добавлять завершающий нулевой символ к строке, которую вы создаете программно. Если при отображении строки на экране в ее конце появились непонятные кракозябры или если программа почему- то зависла, проверьте, не забыли ли вы добавить в строку этот волшебный нулевой символ. Позаботьтесь о том, чтобы в первом символьном массиве хватило места для размещения результирующей объединенной строки. Следующие инструкции C++ выглядят весьма заманчиво: char dash [ ] = ,-concatstring(dash, szMyName); Однако корректно этот код работать не будет, потому что в массиве dash можно сохранить всего четыре символа. Поэтому функции St ring (> несомненно перейдет границы массива dash. Функции C++ р1 со зок Для работы со строками в C++ можно использовать стандартные библиотечные функции. Некоторые из них намного сложнее, чем может показаться с первого взгляда. Вы можете написать собственные версии этих функций - например, в образовательных целях, как это было в случае с функцией объединения строк. Однако, используя функции из табл. 7.1, вы оградите себя от многих неприятностей и головной боли. Таблиц 1. Функции, обрабатывающие строки НАЗВАНИЕ ДЕЙСТВИЕ
Чтобы использовать функции работы со строками, нужно добавить в начале программы директиву В программе 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 - эта программа призвана дать читателю представление о
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |