Хелпикс

Главная

Контакты

Случайная статья





size_t strcspn(const char *s1, const char *s2) ;



size_t strcspn(const char *s1, const char *s2) ;

Определяет и возвращает длину начального сегмента строки s1, содержащего только те символы, которые не входят в s2.

char * strpbrk(const char *s1, const char *s2);

Находит в строке s1 позицию первого вхождения любого из символов строки s2. Если символ из строки найден, возвращается указатель на этот символов строке s1, иначе возвращается NULL.

char * strrchr(const char *s, int c) ;

Находит позицию последнего вхождения символа c в строку s. Если c найден, функция возвращает указатель на этот символ, иначе возвращается NULL.

char * strstr(const char *s1, const char *s2) ;

Находит позицию первого вхождения строки s2 в строку s1. Если подстрока найдена, функция возвращает указатель подстроки в строке s1, иначе возвращается NULL.

 

 

Сегодня вы познакомитесь со строками в с++ и научитесь немного их обрабатывать.

Строки в с++ позволяют нам работать с символьными данными. Благодаря ним мы можем читать с клавиатуры текст, как-то его обрабатывать и затем, например, снова его выводить в консоль.

В С++ существует 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;

 

Вот собственно небольшой кусок программы, работающий со строками и непонятно что делающей.

Ну а теперь, как всегда, немного практики;) (Хотя вполне возможно для новичков весь вышеизложенный текст и так вынос мозга и они уже в отрубе;))

Задачи для строк типа char:

  1. Подсчитать количество символов с строке (строка кончается элементом 0: c=0 if(c==0) cout<<"end"<<endl;
  2. Вам вводят строку, затем вводят подстроку. Если подстрока есть в введенной строке вывести да, иначе нет
  3. Вводят 3 строки: а, б, с. Заменить в строке с строку а на строку б

Задачи для строк типа string:

  1. Вводят текст и вводят подстроку, найти все вхождения подстроку в текст
  2. Вводят текст и два слова, заменить все слова 1 на слова 2 и все слова 2 на слова 1
  3. ВВодят имя и текст, вывести все вхождения имени в текст (имя + 5 символов до и 5 символов после него)
  4. Вводят 2 текста. Сравнить их, объединить, вывести все пробелы, точки, запятые, двоеточия. Затем вывести размер каждого текста и общий размер. Затем поменять все буквы а на a (русские на латинские) и к на k. Потом вывести количество замен.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.