14 нояб. 2012 г.

Работа со строковым типом данных

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

Опорный конспект по теме: Строковый тип данных.
Символьная строка – это последовательность символом, которая заканчивается символом с кодом 0. Количество символов в строке называется ее длиной.
На каждый символ строки отводится 1 байт. Длина строки может лежать в диапазоне от 0 до 255.
Например, строка Мама мыла раму. имеет длину = 15.

Объявление строки:     string s;
Например, strings = "Привет, Вася!";
К каждому символу строки можно обращаться через индекс.
Например, в строке 
S=”Мама мыла раму.”;
s[0]=’М’; s[7]=’л’ ; s[14]=’.’

Стандартный ввод-вывод строк
#include<iostream> //библиотека потокового ввода-вывода
#include<string> //библиотека работы со строками
using namespace std;  // стандартное пространство имен
main()
{
string Name;
cout<<”Как тебя зовут?”;
cin>>Name;
cout<< “Привет, ”<
 }
Что такое пространство имен? Простыми словами - это группировка определенных функций, классов и т.п. Если какой-либо разработчик напишет свою библиотеку функций и в ней окажутся функции с теми же названиями, что и функции в другой библиотеке, то разработчику следует объявить уникальное пространство имен для своих функций и классов. Тогда программист, использующий такую библиотеку, сможет либо при вызове определенных функций использовать префикс пространства имен, либо объявить, что все функции по умолчанию будут вызываться из определенного пространства имен. Практически все стандартные библиотеки C++ (в том числе и STL - библиотека стандартных шаблонов) используют пространство имен std, именно поэтому практически всегда нужно писать using namespace std.

Операции над строками:

1) Операция сцепления (+)
A=”Привет,”;
B=”Вася”
S=A+” “+B+”!”=”Привет, Вася!”
Чему равна строка M?
M=”Эх,”+B+”,”+B+”!”
M=___________________

2) Операции отношения (сравнения двух строк) - strcmp
Функция возвращает ноль, если строки равны (то есть «разность»
между ними равна нулю) и ненулевое значение, если строки различны. Сравнение происходит по кодам символов, поэтому функция различает строчные и заглавные буквы – они имеют разные коды.
Если строки не равны, функция возвращает «разность» между первой и второй строкой, то есть разность кодов первых различных символов.
Например:
 string str1 ("green apple");
 string str2 ("red apple");
 if (str1.compare(str2) != 0)
    cout << str1 << " is not " << str2 << "\n";
 S1
S2
Результат strcmp(S1, S2)
AA
AA
0
AB
AAB
'B' – 'A' = 66 – 65 = 1
AB
CA
'A' – 'C' = 65 – 67 = -2
AA
AAA
'\0' – 'A' = -65
Сравните (поставьте знак):
‘Иванов’

‘Иванова’;
       ‘Моряк’

‘Море’;
‘оно’

‘она’

Стандартные функции и процедуры для работы со строками
Поиск первого вхождения подстроки в строке
Функция S.find(S1);  - обнаруживает позицию подстроки S1 в строке S

string s = “assa’”;
k=s.find(“as”) ;                  
k________

Длина строки
Функция length() – длина строки

string s = “Идет урок”;
int k=s.length();
k=__________

Копирование строк
1) Функция string S2(S1) – копирует всю строку S1 в строку S2 – работает только при объявлении переменной
В копировании участвуют две строки, они называются «источник» (строка, откуда копируется информация) и «приемник» (куда она записывается или добавляется).

Функция string S2(S1, N) копирует N символов из строки S1 в строку S2.
Функция string S2(S1, N,M) копирует M символов из строки S1 в строку S2, начиная с N-символа

S=“Информатика”;
M(S,4,1);
M=____________

2) s1.append(s,N,M) – копирование из строки S в строку S1 (значение параметров такие же как и в первом случае)

Удаление символов из строки
Процедура S.erase(pos,N) – удаляет N символов из строки S, начиная с позиции pos.

S=”absdef”;
S.erase(3, 2);  результат: S=’abef
S.erase(2, 6);  результат: S=’a
Чему станет равной строка M после выполнения операторов?
М=”Мой родной город”
M.erase(5,7)
M=____________________

Вставка символов в строку
Процедура S.insert(pos,S1) – вставляет подстроку S1 в строку S, начиная с позиции pos.

S=”мир”;
S.insert(0,“ку”);
S=”кумир”;

Чему станет равной строка M после выполнения операторов?
М=”моток”;
M.insert(2,”ло”);
M=_______________

Комментариев нет:

Отправить комментарий

Комментарии просматриваются модератором.