В С++ существует 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() - возвращает число элементов в строке.
Теперь немного примеров и затем практика. Постарайтесь сами понять, что делает каждый пример
string name,surname,text,fullname,s1,s2,s3,user;
user="Petya Petrov";
cout<<"Enter your name"<<endl;
cin>>name;
cout<<"Enter your surname"<<endl;
cin>>surname;
fullname=name;
fullname+=" "; // добавляем пробел
fullname.append(surname);
if (fullname.compare(user)==0) // <=> if (!(fullname.compare(user)))
cout<<"Your are good user"<<endl;
else
cout<<"Bad user"<<endl;
cout<<"enter s1"<<endl;
cin>>s1;
cout<<"enter s2"<<endl;
cin>>s2;
s1.swap(s2);
cout<"new s1: "<<s1<<endl<<"new s2: "<<s2<<endl;
cout<<"Enter big text with your name"<<endl;
cin>>text;
int i=0;
i=text.find("name");
while (i!=-1)
{
text.replace(i,name.length(),name);
s3=text.substr(i,name.length());
cout<<"Replaced: "<<s3<<endl;
i=text.find("name");
}
cout<<"New text:"<<endl<<text<<endl;
text.clear();
cout<<"text: "<<text<<endl;
Вот собственно небольшой кусок программы, работающий со строками и непонятно что делающей.
Комментариев нет:
Отправить комментарий