Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Лекція 11, 12

Тема : Рядкові дані. Функції обробки даних.

Мета: Вивчення та закріплення знанб на базі рішення задач з рядковими даними. Придбання навичок по розробці програм з рядковими даними.

Рядки в с + + дозволяють нам працювати з символьними даними. Завдяки ним ми можемо читати з клавіатури текст , якось його обробляти і потім , наприклад , знову його виводити в консоль.

У С + + існує 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 :

Підрахувати кількість символів з ​​рядку (рядок кінчається елементом 0 : c = 0 if ( c == 0) cout << " end " << endl ;

Вам вводять рядок , потім вводять підрядок . Якщо підрядок є в введеної рядку вивести так, інакше немає

Вводять 3 рядки: а, б , с. Замінити у рядку з рядок а на рядок б

Задачі для рядків типу string :

Вводять текст і вводять підрядок , знайти всі входження підрядок в текст

Вводять текст і два слова , замінити всі слова 1 на слова 2 і всі слова 2 на слова 1

Вводимо ім'я і текст , вивести всі входження імені в текст ( ім'я + 5 символів до і 5 символів після нього)

Вводять 2 тексту. Порівняти їх , об'єднати , вивести всі прогалини , крапки, коми , двокрапки . Потім вивести розмір кожного тексту і загальний розмір . Потім поміняти всі букви а на a (росіяни на латинські ) і до на k . Потім вивести кількість замін.


Читайте також:

  1. Вид заняття: лекція
  2. Вид заняття: лекція
  3. Вид заняття: лекція
  4. Вид заняття: лекція
  5. Вид заняття: лекція
  6. Вступна лекція
  7. Вступна лекція 1. Методологічні аспекти технічного регулювання у
  8. Клітинна селекція рослин.
  9. Колекція фонограм з голосами осіб, які анонімно повідомляли про загрозу вибуху
  10. ЛЕКЦІЯ (4): Мануфактурний період світової економіки
  11. Лекція - Геополітика держави на міжнародній арені
  12. Лекція 02.04.2013




Переглядів: 519

<== попередня сторінка | наступна сторінка ==>
Лекція 10 | Лекція 15

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.017 сек.