Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.docx
Скачиваний:
12
Добавлен:
15.03.2015
Размер:
5.82 Mб
Скачать

7.2. Функции для работы со строками

Указатели применимы только к целым числам и массивам.

Пример (тип переменной – целое число):

#include <iostream>

#include <windows.h>

using namespace std;

string Rus(string text) //установка вывода русского языка в строке

{

CharToOem((LPCTSTR)text.c_str(), (LPSTR)text.c_str());

return text;

}

int main()

{

int a;

cout <<Rus("Введите целое число: "); cin>>a;

int *address; address=&a; //указатель на адрес, где хранится a

cout <<Rus("Число=")<<a<<Rus(" Адрес ячейки=")<<address<<endl;

return 0;

}

Пример (тип переменной – символ):

#include <iostream>

using namespace std;

int main()

{

char str[] = "Hello, ivan!"; //объявляем символьный массив

char *b; //объявляем указатель на символ

b = &str[7]; //b указывает на 7-oй символ str

*b = 'I'; // присваиваем первому элементу b символ 'I'

cout << b; // выводим строку, начиная от b на экран

}

Изменения могут вносяться напрямую (см. пример)

#include <iostream>

#include <windows.h>

#include <cstdio> //для функции gets()

using namespace std;

int main()

{

char a[10];

cout<<"Input a="; gets(a); //занесение символа в массив a[0]-a[9]

int i;

for (i=0; i<=10; i=i+1)

{cout<<i<<" "<<&a+i<<" "<<a[i]<<endl;}

a[0]=65; //запись символа А в массив a[0]

for (i=0; i<=10; i=i+1)

{cout<<i<<" "<<&a+i<<" "<<a[i]<<endl;}

return 0;

}

или с использованием специальных функций.

Имеется ряд функций для работы со строками. Некоторые из них приведены в табл.7.1.

Табл.7.1. Функции для работы со строками

Функция

Описание

str.length()

Определение длины строки с именем str

strcmp(s1,s2)

Сравнение двух строк с именами s1и s2

str.append("xxx")

Добавление фрагмента “ххх” в конец строки с именем str

str.insert(i, "yyy");

Вставка фрагмента “yyy” в позицию i

str.replace(i, j, Rus("zzz"))

Замена j символов на фрагмент “zzz” в позиции i

str.erase(i,j)

Удаление из строки j символов с позиции i

str.at(i)

Показать символ на позиции i

Пример: работа со строками.

#include <iostream>

#include <windows.h> // необходима для функции CharToOem

#include <cstring> //включение библиотеки операций со строками

#include <string> //включение библиотеки операций со строками

using namespace std;

string Rus(string text) //установка вывода русского языка в строке

{

CharToOem((LPCTSTR)text.c_str(), (LPSTR)text.c_str());

return text;

}

int main()

{

string str1, str2, frag;

cout<< Rus ("Введите первую строку="); cin>>str1;

cout<< Rus ("Введите вторую строку="); cin>>str2;

cout<<endl;

cout<< Rus ("1: Длина первой строки ")<<endl;

cout<< Rus ("2: Сравнить строки строки ")<<endl;

cout<< Rus ("3: Склеить строки")<<endl;

cout<< Rus ("4: Добавить в конец первой строки ")<<endl;

cout<< Rus ("5: Вставить в первую строку ")<<endl;

cout<< Rus ("6: Заменить в первой строке ")<<endl;

cout<< Rus ("7: Удалить из первой строки ")<<endl;

cout<< Rus ("8: Показать символ первой строки ")<<endl;

cout<<endl;

int a=1, i, j;

while (a!=0)

{

cin >>a;

switch (a)

{

case 1:

cout <<Rus("Длина строки=")<<str1.length()<<endl;

cout <<endl;

break;

case 2:

if (str1==str2) cout << Rus("Строки одинаковы !!!")<<endl;

else cout << Rus("Строки разные !!!")<<endl;

cout <<endl;

break;

case 3:

str1=str1+str2;

cout <<Rus("Результат = ")<<str1<<endl;

cout <<endl;

break;

case 4:

cout <<Rus("фрагмент "); cin>>frag;

cout <<Rus("Результат = ")<<str1.append(frag)<<endl;

cout <<endl;

break;

case 5:

cout <<Rus("фрагмент "); cin>>frag;

cout <<Rus("в позицию ");

cin >>i;

cout <<Rus("Результат = ")<<str1.insert(i, frag)<<endl;

cout <<endl;

break;

case 6:

cout <<Rus("после позиции ");

cin >>i;

cout <<Rus("число символов ");

cin>>j;

cout<<Rus("на "); cin>>frag;

cout <<Rus("Результат = ")<<str1.replace(i, j, frag)<<endl;

cout <<endl;

break;

case 7:

cout <<Rus("после позиции ");

cin >>i;

cout <<Rus("число символов ");

cin >>j;

cout <<Rus("Результат = ")<<str1.erase(i,j)<<endl;

cout <<endl;

break;

case 8:

cout <<Rus("на позиции ");

cin>>i;

cout <<Rus("Результат = ")<<str1.at(i)<<endl;

cout <<endl;

default: a=false;

}

}

return 0;

}

Задание. Выполнить лабораторную работу 7 (Работа со строками).