Ассистент кафедры «Основы информатики» Ташкентского Университета Информационных Технологий Лектор: Саттаров Акбар Бахтиярович Тема: Размерности строк на.

Презентация:



Advertisements
Похожие презентации
Основы информатики Массивы. Указатели. Заикин Олег Сергеевич
Advertisements

Понятие строки. Операции со строковыми величинами. Стандартные процедуры и функции обработки строковых величин. Простые алгоритмы работы со строками на.
Основы информатики Лекция. Массивы. Указатели. Заикин Олег Сергеевич
Символьные и Строковые величины. СИМВОЛЬНЫЕ И СТРОКОВЫЕ ВЕЛИЧИНЫ Для работы с символами, словами и предложениями в Паскале существуют типы данных – CHAR.
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
Чувашия, с.Моргауши, МБОУ "Моргаушская СОШ" - Павлинова Раиса Мефодьевна, г. Тема: Паскаль «строковые переменные». Обработка строк текста МБОУ.
Массивы и строки Лекция 5. Одномерные массивы. Объявление. Общая форма объявления: тип имя_переменной[размер]; Пример: double balance[100]; balance[3]
Лекция 9 Функции. Массивы-параметры функции Передача массива в функцию Пример: void array_enter(int a[], int size) { int i; for (i = 0; i < size; i++)
СИМВОЛЬНЫЕ СТРОКИ С++. ОБЪЯВЛЕНИЕ СИМВОЛЬНЫХ СТРОК В ПРОГРАММАХ В C++ символьные строки хранятся в массиве типа char, который заканчивается символом NULL.
Лекция 4. Введение в С++ Наследование, множественное наследование. Конструкторы, деструкторы. Виртуальные функции.
Работа с файлами Сазонов Д.О. ПМиЭММ Часть 2. Тема занятия: Работа с файлами через потоки Для реализации файлового ввода/вывода, необходимо включить в.
С ИМВОЛЬНЫЕ И С ТРОКОВЫЕ ВЕЛИЧИНЫ. О ГЛАВЛЕНИЕ Символьные и Строковые величины Сравнение переменных Сложение переменных Функция Concat Функция Concat.
Символы и строки. Процедуры и функции работы со строками.
Лекция 6 Функции. Объявления и определения Объявление функции – указание имени функции, а также входных и выходных параметров Определение функции – указание.
Разработчики: Деникин А.В., Деникина Н.В.1 МАССИВЫ В C#. Содержание Принципы работы с массивами Типовые алгоритмы обработки массивов Сортировка массивов.
Лекция 11. Введение в ООП. Часть 4 Красс Александр СПбГУ ИТМО, 2008.
СТРОКИ Строковой называется последовательность символов определённой длины. Идентификатор типа – слово String Примеры описания: Var Str1 : String[10];
СТРОКИ Строковой называется последовательность символов определённой длины. Идентификатор типа – слово String Примеры описания: Var Str1 : String[10];
Лекция 6 Функции. Объявления и определения Объявление функции – указание имени функции, а также входных и выходных параметров Определение функции – указание.
Компьютеры могут обрабатывать данные различных типов. Вам уже приходилось иметь дело с числовыми типами данных: целым и вещественным. Не менее широко.
Транксрипт:

Ассистент кафедры «Основы информатики» Ташкентского Университета Информационных Технологий Лектор: Саттаров Акбар Бахтиярович Тема: Размерности строк на С++ и работа с ними План: 1. Строки типов String; 2. Функция копирования часть строки на другую строку; 3. Функция присвоения часть строки на другую строку; 4. Функции размещения, стирания, изменения, выделения и поиска часть строки на другую строку; 5.Заключение. Лекция 5

На языке C++ для стандартных типов строк используется тип string и он входит в классу типов string. Для этого типа строк знак \0 не является окончанием и он является простым массивными знаками. Результат длины строки типа string динамически меняется, потому что в его состав входит несколько функций облегчающих работу. Переменные типов string объявление выглядит следующим образом: string s1,s2,s3;

Для этих строк определяются особые задачи и функции. Существует различные способы объявления начальных значений типов string: string s1=первый способ; string s2(второй способ); string s3(s2); string s4=s2;

Используются следующие функции для перехода части первой строки на другую и их прототип следующий: assign(const string &str); assign(const string &str, unsigned int pos, unsigned int n); assign(const char *str, int n); Значение первой функции эквивалентно задаче: выводит строку типа string с переменной str или константу строки: string s1,s2; s1=первая строка; s2.assign(s1); // s2=s1 эквивалент задаче

Пример: string s1,s2,s3; s1= ; s2.assign(s1,4,5); // s2=45678 s3.assign(s1,2,20); // s3= Еще один пример: char * strold; cin.getline(strold,100);//вводится string s1,s2; s2.assign(strold,6); // s2= s3.assign(strold,20); // s3=

Функции присвоения часть строки на другую строку выглядит следующим образом : append(const string &str); append(const string &str, unsigned int pos, unsigned int n); append(const char *str, int n); Разница между этими функциями и выше указанными функциями assign в том, что в конец строки вызываемую эту функцию добавляет саму строку str или его часть.

Например: char * sc; cin.getline(sc,100); //вводится string s1,s,s2; s2=sc; s1=пример; s=aaa; //s2= s2.append(abcdef); //задача s2+=abcdef //и s2= abcdef s1.append(s2,4,5); //s1=пример s.append(ss,5); // s=aaa012345

Для размещения одной строки внутрь на вторую строку используются следующие функции: insert(unsigned int pos1,const string &str); insert(unsigned int pos1,const string & str, unsigned int pos2,unsigned int n); insert(unsigned int pos1,const char *str, int n); Эти функции работают как append, разница в том, что размещение строки str или его часть начинается с указанной позиции pos1. Тогда символы находящиеся на позиции pos1 сдвигаются на право.

Например: char * sc; cin.getline (sc,100); //вводится строка unsigned int i=3; string s1,s,s2; s2=sc; s1=misollar; s=xyz; // s2= s2.insert(i,abcdef); // s2=012abcdef s1.insert(i-1,s2,4,5); // s1=при меры s.insert(i-2,sc,5); // s=x01234yz

Для стирания части строки необходимо использовать следующие функции: erase(unsigned int pos=0,unsigned int n=npos); Эта функция стирает n знаков после указанной позиции pos1. Если pos1 неуказанно, то функция стирает с начало строки. Если не указывается n, то стираются все символы до конца строки:

Например: string s1,s2,s3; s1= ; s2=s1;s3=s1; s1.erase(4,5); // s1=01239 s2.erase(3); // s2=012 s3.erase(); // s3= Функция void clear() полностью очищает вызываемую строку. Например: s1.clear(); //строка будет пустой (s1=)

Для замены части строки на другую используются следующие функции: replace(unsigned int pos1,unsigned int n1, const string & str); replace(unsigned int pos1,unsigned int n1, const string & str,unsigned int pos2, unsigned int n2); replace(unsigned int pos1,unsigned int n1, const char *str, int n); Эти функции работают как insert, в отличии от него он заменяет n1 элементов позиции pos1 на n2 элементы позиции pos2 из строки str.

Пример: char * sc= ; unsigned int i=3,j=2; string s1,s,s2; s2=sc; s1=примеры; s=xyz; // s2= s2.replace(i,j,abcdef); // s2=012abcdef56789 s1.replace(i-1,j+1,s2,4,5); // s1=при меры s.replace(i-2,j+2,sc,5); // s=x функция swap(string & str) используется для замены двух строк. Например: string s1,s2; s1=01234; s2= ; s1.swap(s2); // s2=01234 и s1=

Прототип функции следующий: string substr (unsigned int pos=0, unsigned int n=npos)const; Эта функция возвращает n символов с позиции строки pos1. Если pos1 неуказанно, возвращает значения с начало строки, если n неуказанно, возвращает значения всех символов до конца строки: string s1,s2,s3; s1= ; s2=s1; s3=s1; s2=s1.substr(4,5); // s2=45678 s3=s1.substr(3); // s3= cout<<s1.substr(1,3)+s1.substr(); // строка выйдет на экран

Для перевода типа string на char тип используется функция: const char * c_str()const; Эта функция возвращает указывающую константу строки типа char оканчивающим со знаком \0 : char *s1; string s2= ; s1=s2.c_str(); Также еще используется функция const char * data()const; Но эта функция не добавляет знак \0 в конец строки.

Определены несколько вариантов функций, которые ищет частей строки класса string. Рассмотрим основных из них: unsigned int find(const string &str, unsigned int pos=0)const; Функция будет искать строку str с позиции pos и возвращает первое совпадающийся значение индекса строки, иначе возвращает максимальное целое значение npos (npos= ), если (pos) незадача, тогда он ищет с начало строки. unsigned int find(char c.unsigned int pos=0)const; Различие этой функции от другой в том, что он ищет символ s из строки.

unsigned int rfind(const string &str, unsigned int pos=npos)const; Функция возвращает индекс первого совпадения строки str вместо указанной позиции pos, иначе возвращается значение npos, если pos неуказанно то он ищет до конца строки. unsigned int rfind(char c.unsigned int pos=npos) const; Разница этой функции от предыдущих в том, что он ищет символ s из строки.

Для сравнения частей строк используется функция compare: int compare(const string &str)const; int compare(unsigned int pos1,unsigned int n1, const string & str) const; int compare(unsigned int pos1,unsigned int n1, const string & str,unsigned int pos2, unsigned int n2)const;

В первой форме функции две строки полностью сравниваются: функция возвращает отрицательное число, если функция меньше чем вызываемая строка str, возвращает 0, если они будут равны и положительное число, если функция больше чем вызываемая строка str. Во второй форме тоже как и в первой выполняются те же задачи, только функция сравнивывает строку str с начало позиции pos1 количеством знаков n1. В третей форме функция сравнивает между собой n1 элементов строки pos1 с n2 элементов строки pos2.

Например: 1. #include 2. void main() 3. { 4. String s1= ab2csef, s2=456, s3=ghk; 5. cout<<s1=<<s1<<endl; 6. cout<<s2=<<s2<<endl; 7. cout<<s3=<<s3<<endl; 8. if(s2.compare(s3)>0)cout s3<<endl; 9. if(s2.compare(s3)==0)cout<<s2=s3<<endl; 10. if(s2.compare(s3)<0)cout<<s2<s3<<endl; 11. if(s1.compare(4,6,s2)>0)cout s2<<endl; 12. if(s1.compare(5,2,s2,1,2)==0) 13. cout<<s1[5-6]=s2[1-2]<<endl; 14. }

1. #include 2. #include 3. int main(int argc, char* argv[]) 4. { 5. const int ФИО_длина=50; 6. string * Студент; 7. char * Satr=(char*)malloc(ФИО_длина) ; 8. unsigned int колич_студент; 9. char число[3]; 10. do 11. { 12. cout<<Введите количество студентов: "; 13. cin>>число; 14. } 15. while((колич_студент=atoi(число ))<=0); 16. Студент =new string[колич_студентов]; 17. cin.ignore(); 18. for(int i=0; i<колич_студент; i++) 19. { 20. cout<<i+1<<"- ФИО студентов: "; 21. cin.getline(строка,50); 22. Студент[i].assign(строка); 23. }

bool изменен=true; 24. for(int i=0; i<колич_студент-1 && изменен; i++) 25. {изменен=false; 26. for(int j=i; j<колич_студент-1; j++) 27. if(Студент[j].compare(Студент[j+ 1])>0) 28. { 29. изменен=true; 30. strcpy(строка,Студент[j].data()); 31. Студент[j].assign(Студент[j+1]); 32. Студент[j+1].assign(Строка); 33. } 34. } 35. cout<<Список по алфавиту:\n"; 36. for(int i=0; i<колич_студент; i++) 37. cout<<Студент[i]<<endl; 38. delete [] Студент; 39. free(Строка); 40. return 0; 41. }

Существует функции определяющие длину строки класса string, его пустоту или объем занимаемого в памяти: unsigned int size()const; // размер строки unsigned int length()const; // кол. элементов строки unsigned int max_size()const; // максимальная длина строки ( ) unsigned int capacity()const;// объем строки занимаемой в памяти bool empty()const; // true, если строка пустая

Переменные типа String являются динамическими массивами и в них хранятся до 255 символов. Определены несколько функций для работы с такими переменными типа. В некоторых компиляторах вид этих функций изменен, но по его названию не трудно определить какую работу он делает.