Клас String в C ++




клас string з ++, програмування для початківців

Використання текстової інформації під час роботи з базами даних, файлами, для отримання і відправлення повідомлень, є невід'ємною частиною роботи кожного програміста. рядки застосовуються, як для внутрішніх цілей (налагодження і тестування коду), так і для вирішення спільних завдань, передачі даних клієнта, оформлення графічного інтерфейсу. Зважаючи на це слід приділити особливу увагу тому, як побудовані рядки в мові С ++, як працювати з їх базовими операції і які методи обробки об'єктів типу string швидше, або доцільніше в тій чи іншій ситуації.

Рядки в мові C ++ можуть являти собою масиви символів char – це вбудований тип, який застосовувався в С. Або екземпляри класу string, який включений в стандартну бібліотеку С ++. Варто зауважити, що при створенні об'єкта даного типу ми практично отримуємо динамічно змінюється масив, т.е. той, якому немає необхідності ставити початкові розміри, оскільки вони можуть змінюватися в процесі роботи з сутністю.

У першому випадку рядок розміщується в пам'яті, як масив. Через покажчик типу char здійснюється доступ до неї. Даний підхід загрожує помилками і є досить складним, оскільки реалізований на низькому рівні. об'єкти класу string полегшують роботу, через них можна отримати доступ до стандартних операцій над рядками. Вони ж входять в простір імен СТЛ (Стандартна бібліотека шаблонів). Для подальшого використання стандартних бібліотек З необхідно підключити заголовний файл:

Найпростішим прикладом використання змінної рядкового типу буде виведення її на екран. Але ускладнити завдання і спробуємо, для начала, вважати значення рядка, а після її оперувати.

метод getline() дозволяє зчитувати дані з потоку cin, а також записувати їх в змінну, яка вказується після коми.

В разі, коли необхідно ініціалізувати змінну під час її створення, слід використовувати наступний синтаксис:

Розглянемо базові методи класу string, які дозволяють модифікувати рядки і отримувати інформацію про їх параметрах.

Для отримання довжини рядка можна застосовувати два методи. Один з них size() інший довжина(). Обидва методи повертають чисельну кількість символів. Але слід зауважити, що нумерація елементів в строковому масиві все одно починається з 0.

Лістинг для перевірки:

Далі ми бачимо, що обидва методи повертають однакові значення.

робота з рядками в C ++, клас Рядок C ++, методи length() і розмір()

Для перевірки строкової змінної на наявність даних в ній використовується функція empty(), яка повертає логічне значення ( 0 если false или 1 если true). Дана операція корисна, коли необхідно себе убезпечити від втрати даних.
Щоб обнулити малу змінну застосовується метод ясно(). В результаті після його виконання myString.size() вернет 0, а myString.empty() – значение true, т.е. 1.
Лістинг коду для перевірки функцій:

результати виконання:
робота з рядками в C ++, клас Рядок C ++

Тепер розглянемо менш тривіальні операції, які дозволять заощадити час і зусилля програмістів, а також уникнути використання масивних циклів для перебору кожного значення строкового масиву.

Функция push_back (char) дозволяє додати в кінець поточного рядка будь-який символ типу char. При этом, нам немає необхідності пересохранять нове значення рядка, стару змінну просто буде модифікованої.

клас string дозволяє маніпулювати двома рядками одночасно, записуючи значення з однієї в іншу. Для цього на об'єкті рядки слід викликати метод вставити (INT startInResultString, рядок з, INT startInSourceString, int amount). де startInResultString – стартова позиція осередки в рядку, в яку проводиться запис нових даних, т.е. нові значення будуть розміщуватися починаючи з цього індексу. рядкова змінна від являє собою рядок з якої беруться дані, далі всі параметри відносяться саме до неї. Початкове значення індексу з якого почнеться копіювання даних позначено startInSourceString. Загальна кількість символів, які будуть скопійовані з рядка від позначено amount, відлік проводиться починаючи зі стартового індексу.
Лістинг коду дозволить краще розібратися зі вхідними параметрами функції.

Результати виконання коду:

робота з рядками в C ++, клас Рядок C ++

Були розібрані не всі, але найбільш часто-використовуваних функцій для роботи із строковими об'єктами. перевага класу string складається в простоті використання і підтримки великої кількості методів. Проте, строкові об'єкти обробляються повільно. У деяких випадках може трапитися втрата даних або розрив цілісності рядка, яку потім можна буде ніяк вивести і перевірити візуально.

експериментуйте – створіть об'єкт класу string і викликайте його методи по-черзі. Намагайтеся самі розібратися, що вони роблять і як працюють. У багатьох підручниках пропонується самостійно написати свій власний (звичайно ж приборканий) класс для роботи з рядками. Це зовсім нескладно і ви відмінно розберетеся з тим, як влаштований справжній клас string. Ми підготуємо для вас кілька завдань, для закріплення цього матеріалу.

Обов'язково подивіться відео по темі клас (автор Денис Марков):

Нові уроки з програмування:


Згоден отримувати повідомлення від purecodecpp.com на мій e-mail

дата
сторінка
Клас String в C ++
рейтинг
5

5 думки про "Клас String в C ++

  1. гарна стаття, може краща у всьому циклі статей – по збалансованості детальності і простоті викладу.

    тільки незрозуміло, чому всюди в тексті клас називається String (з великої букви), якщо навіть в прикладах він скрізь використовується як string (з маленької букви). Якщо ви напишете String в коді, то тут же отримаєте грубу синтаксичну помилку.

  2. Ще добре б згадати, хоча б побіжно (або окремою темою в продовження, “використання string”?):

    1. що з string завжди можна “Вилучити” більш звичне уявлення char * (в стилі C) c_str методом():
    покажчик на рядок = “ххх”;
    символ * з = s.c_str();

    2. про перевизначених операціях + = і + для string, як конкатенація рядків:
    Рядок ч = “Здравствуйте “, ш = “світ”;
    cout << годину + вага << endl;
    ч + = ш;
    cout << годину << endl;

    3. про цілої великої групи методів-уявлення рядків для зображення числових значень:
    рядок d( "123" ), f( "1.23" );
    довго я = d.stoul();
    пливуть г = d.stof();

  3. І останнє … зауваження:
    > Обидва методи повертають чисельну кількість символів.

    довжина() і розмір() повертають не кількість символів, а кількість байт у вмісті рядка. для ASCII (англійських) символов – це одне і теж. Але для російських (та інших мов) – нет, і залежить від використовуваного кодування.

    , в залежності від того, в якому редакторі і якому кодуванні працюєте з кодом програми.

    Точні значення тут не важливі… Але важливо знати, що length() і розмір() для російських рядків не дають передбачуване число символів, що може породжувати важко знаходять помилки!

  4. … з'їла, гидоту, кілька рядків прикладу!
    Але має бути зрозуміло, що довжина “вітання!” буде дорівнює 13.

залишити коментар

Код розміщуйте в тегах: <pre class="lang:C ++ декодуванням:true ">ВАШ КОД</заздалегідь>