
- •5. Кодовые таблицы ascii и ansi. Работа с символами и их кодами.
- •6. Константы в языке Си: целые, вещественные с фиксированной и плавающей точкой, символьные, строковые, null. Именованные константы.
- •8. Ввод информации в консольном стиле. Преобразование вводимых данных.
- •9. Синтаксис операторов языка Cи, операторы-выражения. Ошибки компиляции, времени выполнения, логические (смысловые).
- •10. Последовательность выполнения операций. Приоритет операций. Скобки.
- •12. Арифметические операции
- •15. Условные операторы (if, switch).
- •16. Тернарная операция "?".
- •19. Одномерные массивы. Инициализация одномерных массивов. Инициализация массива символов.
- •21. Циклические алгоритмы. Основные требования при использовании циклических (итерационных) алгоритмов.
- •23. Оператор цикла с предусловием и коррекцией for.
- •24.Вложенные циклы, последовательность выполнения входящих в них операторов. Простейший пример их применения к двумерным массивам.
- •26. Указатели, операции * и &. Указатель на указатель.
- •27. . Операции над указателями.
- •28. Связь указателей с массивами.
- •29. Работа с динамической памятью.
- •30. Строковые данные в языке Си как массивы символов. Стандартные функции работы со строками.
- •31. Тип String. Операции с типом String. Методы класса String.
- •32. Преобразование переменных типа String и массивов char друг в друга и в другие типы.
- •33. Краткая характеристика файлов *.H. Стандартные библиотечные функции. Стандартные арифметические функции.
- •3 4. Функции пользователя - способы описания, операция вызова функции.
- •35. Способы передачи информации в функцию и из нее.
- •36. Область видимости. Понятие блока.
- •37. Классы памяти и время жизни
- •38. Препроцессор, его роль. Директивы препроцессора. Директива #include.
31. Тип String. Операции с типом String. Методы класса String.
а) Основные понятия.
В оконных компонентах и функциях C++ Builder'а основным строковым типом является тип AnsiString, который обозначается также просто как String .
Отдельные символы, входящие в строку типа String, имеют тип char. К ним можно обращаться так же, как к элементам массива, но нумерация начинается с единицы.
Текст в переменной типа String не обязательно заканчивается нуль-терминатором. Если попытка обращения к несуществующему символу строки (например, в вышеприведенном образце V[0], или V[8]) может вызвать ошибку (в то время как выход за границы массива не проверяется).
б) Действия над типом String.
Основными операциями с типом String являются:
Присваивание: S1=S2;
Сравнение:S1==S2, S1<=S2, S1!=S2 и т.д.
Здесь знак < означает предшествование по алфавиту. Равенство означает точное совпадение строк.
Сцепление : S1+S2
Допустимы и операции присваивания вида S1+=S2.
Многие другие операции над строками осуществляются с помощью методов типа String. Метод - это тип функций, вызываемых особым образом: для обращения к методу надо после имени переменной типа String поставить точку, а затем имя метода и круглые скобки (в которых, при необходимости, указываются параметры метода).
Основные методы типа String (и типы их результатов, если они есть):
int Length() - длина строки (количество символов в ней);
String SubString(int i, int n) - копирует из строки подстроку, начиная с i-ой позиции, длиной n символов. Исходная строка не изменяется. (Если в исходной строке, начиная с i-ой позиции, содержится меньше n символов, метод выделяет столько символов, сколько есть).
Insert(String S2, int i) - вставляет строку S2 в середину строки, начиная с i-ой позиции;
Delete(int i, int n) - удаляет из строки n символов, начиная с i-ой позиции. (Если в исходной строке, начиная с i-ой позиции, содержится меньше n символов, метод удаляет имеющиеся символы с i-ой позиции).
int Pos(String S2) - ищет первое вхождение подстроки S2 в данной строке. Результат - номер позиции, начиная с которой в строке содержится S2, либо 0, если S2 в ней не содержится.
char * c_str() - преобразует строку к типу "массив char" (см. ниже).
Наряду с методами, для типа String существуют также функции, например функции преобразования к заданному регистру. Они преобразуют не только латинские, но и русские буквы. Они могут применяться с целью регистро-нечувствительного сравнения:
String AnsiUpperCase (String S); ее результат получается из строки S преобразованием всех букв к верхнему регистру (большие буквы);
String AnsiLowerCase (String S); ее результат получается из строки S преобразованием всех букв к нижнему регистру (малые буквы);
32. Преобразование переменных типа String и массивов char друг в друга и в другие типы.
Переменной типа String можно присваивать и значение большинства других типов: символьных (char, массив char), числовых (int, double и т.д.), при этом они автоматически преобразуются к типу String. Аналогично, если в бинарной операции первый операнд имеет тип String, второй также преобразуется к типу String.
а) Преобразование из массива char в String и наоборот.
Для преобразования массива char к типу String достаточно просто присвоить его переменной типа String.
Обратное же преобразование автоматически не делается. Для его осуществления используется метод c_str() типа String. Он создает временный массив char, который создается только на время выполнения оператора, содержащего этот метод:
Если же нужно использовать полученный массив char в последующей программе, его надо скопировать в "постоянный" (объявленный) массив char :
Для ввода массивов char в оконных приложениях необходимо использовать функцию strcpy и метод c_str() :
б) Преобразование из String в простую переменную типа char.
При таком присваивании нужно указать номер символа в строке, который будет присвоен:
в) Преобразование String и числовых типов.
Функции преобразования были описаны выше в теме "Функции ввода-вывода, Ввод-вывод в оконных приложениях":
String IntToStr(int x); - int String
int StrToInt(String S); - String int
double StrToFloat(String S); - String double
String FloatToStr(double x); - double String
String FloatToStrF(double x, Format, int p, int d);
double String с указанием формата и точности.