Скачать презентацию Символы строки тексты представление встроенный Скачать презентацию Символы строки тексты представление встроенный

oap_9(строки).ppt

  • Количество слайдов: 38

Символы, строки, тексты Символы, строки, тексты

представление ► встроенный ► строковый тип - С класс string из STL С++. представление ► встроенный ► строковый тип - С класс string из STL С++.

Примеры символьных констант: 'y' 's' '#’ Примеры строковых констант: Примеры символьных констант: 'y' 's' '#’ Примеры строковых констант: "T" "This is " character string" "This is character string" "Это строковая константа" "A" "1234567890" "$" " внутри строки означают, что в строку входит символ ". 3

Строкой называется массив символов Строка символов хранится в памяти как массив, и доступ к Строкой называется массив символов Строка символов хранится в памяти как массив, и доступ к ней осуществляется при помощи указателя типа char*. Компилятор помещает в конец каждой строки нулевой байт ‘’, с тем чтобы просматривающая строку программа могла определить ее конец. Строка k символов – резервируем k+1

А А � ‘A’ “A” символ(1 байт) строка (2 байта) А А ‘A’ “A” символ(1 байт) строка (2 байта)

Объявление и инициализация строк Объявление и инициализация строк

Массив и указатель: различия char heart[ ] = Массив и указатель: различия char heart[ ] = "Программирование на языке Cи++"; char *head = "Программирование на языке Pascal"; Основное отличие состоит в том, что указатель heart является константой, в то время как указатель head переменной. 7

стандарт ASCII установлено соответствие между символами и кодами ►' ' - 0 x 20, стандарт ASCII установлено соответствие между символами и кодами ►' ' - 0 x 20, 'B' - 0 x 42, ► '*' - 0 x 2 A, 'Y' - 0 x 59, ► '0' - '9' 0 x 30 - 0 x 39 ► 'A' - 'Z' 0 x 41 - 0 x 5 A ► 'a' - 'z' 0 x 61 - 0 x 7 A взаимозаменяемость символов и малых целых в С++

Пример: Получить символ десятичной цифры из значения целой переменной, лежащей в диапазоне 0. . Пример: Получить символ десятичной цифры из значения целой переменной, лежащей в диапазоне 0. . 9:

Пример: Получить символ шестнадцатеричной цифры из значения целой переменной, лежащей в диапазоне 0. . Пример: Получить символ шестнадцатеричной цифры из значения целой переменной, лежащей в диапазоне 0. . 15:

Пример: Получить значение целой переменной из символа десятичной цифры: Пример: Получить значение целой переменной из символа десятичной цифры:

Пример: Преобразовать маленькую латинскую букву в большую: Пример: Преобразовать маленькую латинскую букву в большую:

Работа со строкой for (i=0; B[i] !='�'; i++). . . while (*B++ ) {. Работа со строкой for (i=0; B[i] !=''; i++). . . while (*B++ ) {. . . } -соответствие размерности массива и длины строки транслятором не контролируется, за это несет ответственность программа

► При работе со строкой можно, также как и в массивах, использовать нотацию индексов: ► При работе со строкой можно, также как и в массивах, использовать нотацию индексов:

типичные ошибки //ошибка, str не разыменовывается и не изменяется типичные ошибки //ошибка, str не разыменовывается и не изменяется

Работа со строкой Пример: УДАЛЕНИЯ ЛИШНИХ ПРОБЕЛОВ Работа со строкой Пример: УДАЛЕНИЯ ЛИШНИХ ПРОБЕЛОВ

Пример: поиск СЛОВА МАКСИМАЛЬНОЙ ДЛИНЫ (посимвольная обработка) Пример: поиск СЛОВА МАКСИМАЛЬНОЙ ДЛИНЫ (посимвольная обработка)

Ввод-вывод целых чисел int a 1052 (0 x 041 C) char '1' s[20] '0' Ввод-вывод целых чисел int a 1052 (0 x 041 C) char '1' s[20] '0' '' '5' '2' Внутренняя форма Внешняя форма представления числа

Пример: Преобразование внешней формы во внутреннюю в 10 С/С { char c[] // 1024/0 Пример: Преобразование внешней формы во внутреннюю в 10 С/С { char c[] // 1024/0 int n, i; for (i=0; !(c[i]>='0' && c[i]<='9'); i++) if (c[i]=='') return(0); // Поиск первой цифры for (n=0; c[i]>='0' && c[i]<='9'; i++) // Накопление целого n = n * 10 + c[i] - '0'; // "цифра за цифрой" return n; }

Пример: Контекстная замена - задача Исходная строка Пример: Контекстная замена - задача Исходная строка "abc 234 pe 4234 e“ Заменяемая строка "234" Заменяющая строка "_00_" Результат "abc_00_pe 4_00_e"

Функции работы со строками #include <string. h> #include <cstring> Сравнение двух строк int value; Функции работы со строками #include #include Сравнение двух строк int value; value = strcmp( const char* string 1, const char*string 2 ); 1. value < 0 string 1 0 string 1 >string 2

использование #include <cstring> if (strcmp(name 1, name 2) == 0) puts( использование #include if (strcmp(name 1, name 2) == 0) puts("Имена совпадают"); else puts("Имена не совпадают");

char string 1[] = char string 1[] = "The quick "; char string 2[] = "The QUICK "; … int result; result = strcmp( string 1, string 2 ); if( result > 0 ) cout<< " больше" ; else if( result < 0 ) cout<< " меньше" ; else cout<< " равно" ; // больше

2. Определение длины строки strlen(const char *); использование gets(name); count = strlen(name); printf( 2. Определение длины строки strlen(const char *); использование gets(name); count = strlen(name); printf("Строка %s содержит %d символов", name, count); char buffer[61] = "How long am I? "; size_t len; len = strlen( buffer );

int index; char name[10]; gets(name); for (index = 0; index < 10; index++) { int index; char name[10]; gets(name); for (index = 0; index < 10; index++) { if (name[index] == '') break; } printf("%d", index);

Пример: отображение строки в обратном порядке Пример: отображение строки в обратном порядке

3. Копирование строк char strcpy(char* str 1, const char* str 2); str 2) Использование 3. Копирование строк char strcpy(char* str 1, const char* str 2); str 2) Использование

Собственная версия strcpy() Собственная версия strcpy()

Копирование строк или char *s, *t; Копирование строк или char *s, *t;

char *strncpy(char *s 1, const char *s 2, int kol); Копирует kol символов строки char *strncpy(char *s 1, const char *s 2, int kol); Копирует kol символов строки s 2 в строку s 1

4. Сложение строк char* strcat (char *s 1, const char *s 2); приемник источник 4. Сложение строк char* strcat (char *s 1, const char *s 2); приемник источник Версия char *strncat(char *s 1, const char *s 2, int kol); Приписывает kol символов строки s 2 к строке s 1

5. Преобразования символьных строк int atoi(const char *) // преобразует строку в целое float 5. Преобразования символьных строк int atoi(const char *) // преобразует строку в целое float atof(const char *) //в float long atol(const char *) //в long

6. Преобразование числа V в строку S _itoa(int V, char* S, int kod); kod 6. Преобразование числа V в строку S _itoa(int V, char* S, int kod); kod – основание 2 -36 kod=10

► Для преобразования - следующими функциями: char* _itoa(int value, char* string, int radix); char* ► Для преобразования - следующими функциями: char* _itoa(int value, char* string, int radix); char* _ltoa(long value, char* string, int radix); char* _ultoa(unsigned long value, char* string, int radix); эти функции входят в библиотеку компиляторов от Microsoft.