Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Указатели применимы только к целым числам и массивам целочисленных цифр. Это позволяет хранить в памяти косвенные адреса ячеек, которые по определению могут быть только целыми числами.

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

#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[0]; //указатель b=0 указывает на 0-oй символ strcout << b<<endl; //выводим строку, начиная от 0 на экранstr[7] = 'I'; //присваиваем 7 элементу символ 'I'cout << b<<endl; //выводим строку, начиная от 0 на экранb=&str[7]; //указатель b=0 указывает на 7-oй символ strcout<<b<<endl; //выводим строку, начиная от 7 на экранcout<<str[11]; //выводим 11 литеру строки на экранreturn 0;}

Пример. Тип переменной – символ массива, строка длиной не более 10 литер вводится пользователем, 11-ый и далее символы игнорируются.

#include <iostream>

#include <windows.h>

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

using namespace std;

int main()

{

char a[10];

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

int i;

for (i=0; i<=9; i=i+1) //Чтение массива a[10]

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

cout<<"**********************"<<endl;

a[0]=65; //запись символа А в ячейку a[0]

for (i=0; i<=9; i=i+1) //Чтение массива a[10]

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

return 0;

}

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

Табл.8.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;

}

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

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

 

 





Поделиться с друзьями:


Дата добавления: 2014-11-25; Просмотров: 416; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.