Обработка строк, класс string.
Строки в с++ позволяют нам работать с символьными данными. Благодаря ним мы можем читать с клавиатуры текст, как-то его обрабатывать и затем, например, снова его выводить в консоль.
В С++ существует 2 типа строк.
Первый из них - это массив переменных типа char.
Если кто не помнит, то переменная типа char хранит в себе 1 символ. Размер такой строки равняется размеру массива - 1, т.к. последний элемент содержит NULL (пустая переменная без значения), который обозначает символ конца строки.
Например:
char name[50];
cin>>name;
cout<<"Hello "<<name<<endl;
Второй из вариантов, более удобный - это специальный класс string
Для его работы необходимо в начале программы подключить заголовочный файл string:
#include <string>
В отличии от типа char, string является классом. Более подробно об классах я расскажу позднее, сейчас вам достаточно знать, что классы содержат в себе сразу несколько вещей: переменные, константы и функции для работы с переменными. Это достаточно грубое объяснение, но на первое время вам хватит.
Для создания строки вам необходимо в начале программы написать using namespace std;
Теперь чтоб создать строку достаточно написать:
string s;
Для записи в строку можно использовать оператор =
s="Hello";
Пример работы с классом string:
string name;
cout<<"Enter your name"<<endl;
cin>>name;
cout<<"Hi "<<s<<"!"<<endl;
Но пока вы воспользовались только одной прелестью строк: отсутствием необходимости задавать ее размер. Но кроме этого существует множество функций для работы со строками.
|
|
s.append(str) - добавляет в конец строки строку str. Можно писать как s.append(переменная), так и s.append("строка");
s.assign(str) - присваивает строке s значение строки str. Аналогично записи s=str;
int i=s.begin() - записывает в i индекс первого элемента строки
int i=s.end() - аналогично, но последнего
s.clear() - как следует из названия, отчищает строку. Т.е. удаляет все элементы в ней
s.compare(str) -сравнивает строку s со строкой str и возвращает 0 в случае совпадение (на самом деле сравнивает коды символов и возвращает из разность)
s.copy(куда, сколько, начиная с какого) - копирует из строки s в куда (там может быть как строка типа стринг, так и строка типа char). Последние 2 параметра не обязательные (можно использовать функцию с 1,2 или 3 параметрами)
bool b=s.empty() - если строка пуста, возвращает true, иначе false
s.erase(откуда, сколько) удаляет n элементов с заданной позиции
s.find(str,позиция) - ищет строку str начиная с заданной позиции
s.insert(позиция,str, начиная, beg, count) - вставляет в строку s начиная с заданной позиции часть строки str начиная с позиции beg и вставляя count символов
int len=s.length() - записывает в len длинну строки
|
|
s.push_back(symbol) - добавляет в конец строки символ
s.replace(index, n,str) - берет n первых символов из str и заменяет символы строки s на них, начиная с позиции index
str=s.substr(n,m) - возвращает m символов начиная с позиции n
s.swap(str) меняет содержимое s и str местами.
s.size() - возвращает число элементов в строке.
Вот собственно большинство необходимых функция для работы со строками в с++.
29. Классы. Инкапсуляция. Сокрытие данных и видимость членов класса. Идиома «pimpl».
Класс — разновидность абстрактного типа данных в объектно-ориентированном программировании (ООП), характеризуемый способом своего построения. Другие абстрактные типы данных — метаклассы, интерфейсы, структуры, перечисления, — характеризуются какими-то своими, другими особенностями. Наряду с понятием «объекта» класс является ключевым понятием в ООП (хотя существуют и бесклассовые объектно-ориентированные языки, например, JavaScript; подробнее смотрите Прототипное программирование). Суть отличия классов от других абстрактных типов данных состоит в том, что при задании типа данных класс определяет одновременно и интерфейс, и реализацию для всех своих экземпляров, а вызов метода-конструктора обязателен. Точный смысл этой фразы будет раскрыт ниже.
|
|
На практике объектно-ориентированное программирование сводится к созданию некоторого количества классов, включая интерфейс и реализацию, и последующему их использованию. Графическое представление некоторого количества классов и связей между ними называется диаграммой классов. Объектно-ориентированный подход за время своего развития накопил множество рекомендаций (паттернов) по созданию классов и иерархий классов.
В языках программирования инкапсуля́ция имеет одно из следующих значений, либо их комбинацию:
-языковой механизм ограничения доступа к определённым компонентам объекта;
-языковая конструкция, способствующая объединению данных с методами (или другими функциями), обрабатывающими эти данные.
Инкапсуляция — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, полиморфизмом и наследованием).
В то же время, в языках поддерживающих замыкания, инкапсуляция рассматривается как понятие не присущее исключительно объектно-ориентированному программированию. Также, реализации абстрактных типов данных (например, модули) предлагают схожую модель инкапсуляции.
Сокрытие реализации целесообразно применять в следующих целях:
-предельная локализация изменений при необходимости таких изменений,
-прогнозируемость изменений (какие изменения в коде нужно сделать для заданного изменения функциональности) и прогнозируемость последствий изменений.
Дата добавления: 2015-12-21; просмотров: 21; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!