strings c with examples
Поглиблений огляд основ струн у C ++.
У цій серії С ++ до цього часу ми здебільшого обговорювали числові масиви в С ++. У цьому підручнику ми обговоримо маніпуляції з масивами символів, які ми просто називаємо 'Рядки'.
Символьний масив - це переважно рядок у стилі С, який підтримує С ++. На додаток до масивів символів у стилі С, C ++ також підтримує клас рядків “std :: string”. Далі, у цьому підручнику ми обговоримо обидва типи рядків, а також різницю між ними та про програмування кожного типу в C ++.
=> Зверніть увагу на повний перелік підручників з C ++ у цій серії.
Що ви дізнаєтесь:
Масиви символів (рядки у стилі С)
Рядок c-стилю - це масив символів, закінчений нульовим символом “ 0”. Отже, ми можемо визначити масив типу char та розміри або розмір масивів, а потім ми можемо ініціалізувати його до рядка або масиву символів.
Зверніть увагу, що це компілятор, який закінчує рядок нульовим символом, тому, якщо ми ініціалізуємо масив символів рядком (у подвійній лапці “”), нам потрібно залишити додатковий простір для нульового символу при оголошенні розміру масиву .
Візьмемо кілька прикладів декларування та ініціалізації масивів символів.
char firstStr() = 'This is Cstyle string'; char secStr(100) = {'s','o','f','t','w','a','r','e',' ','t','e','s','t','i','n','g',' ','h','e','l','p',' '}; char thirdStr() = {'h','e','l','l','o',' '};
Усі наведені вище визначення є дійсними визначеннями рядків у стилі С в C ++. Зверніть увагу, що ми можемо оголосити фактичний розмір або залишити розмір порожнім, щоб компілятор міг розмістити розмір залежно від рядка, який ми ініціалізували.
Давайте розглянемо Приклад читання та запису масиву символів у C ++
Нижче наведена проста програма, яка читає рядок за допомогою cin і виводить його за допомогою cout.
#include #include using namespace std; int main() { char firstStr(100); cin>>firstStr; cout<<'you entered : '< Вихід 1:
SoftwareTestingHelp.com
ви ввели: SoftwareTestingHelp.com
Вихід 2:
Це рядок у стилі С
Ви ввели: Це
Якщо порівняти обидва результати, ми побачимо, що коли ми ввели перший рядок “SoftwareTestingHelp.com”, він був надрукований як є.
Але у другому висновку, хоча ми ввели рядок як “Це рядок у стилі С”, висновком було лише “Це”.
Різниця у виведенні полягає в тому, що оператор «>>» cin, який використовується для зчитування рядка, розглядається як функція «scanf» C, яка читає лише до місця, що зустрічається. Отже, «cin with >>» підходить для читання масивів символів без пробілу.
безкоштовний додаток для завантаження mp3 для андроїд телефону
Отже, коли був виявлений другий вихідний простір, функція cin прийняла його як кінець рядка і прочитала лише перше слово.
Для того, щоб прочитати цілий рядок символів, включаючи пробіли, C ++ використовує функцію «get».
Приклад програми, що використовує функцію get, показаний нижче:
#include #include using namespace std; int main() { char firstStr(100); cin.get(firstStr,100); cout<<'you entered : '< Вихід:
Це softwareTestinghelp.com
ви ввели: Це softwareTestinghelp.com
Як показано в прикладі , функція отримання cin використовує два аргументи. Перший аргумент - це змінна масиву символів, у якій слід читати рядок, тоді як другий аргумент - це максимальний розмір масиву.
Рядки в стилі С також підтримують численні функції рядків, які дозволяють користувачам маніпулювати рядками. Ці функції визначені в заголовку “cstring”.
Нижче ми представляємо таблицю, в якій перелічені різні функції рядків, які можна використовувати для маніпулювання рядками у стилі C.
Не Функція Аргументи Опис 1 strcpy s1, s2 Копіює рядок s2 у рядок s1 два strcat s1, s2 Додає або об'єднує рядок s2 до кінця рядка s1 3 strlen s1 Повертає довжину рядка s1 4 strcmp s1, s2 Повертає 0: s1 та s2 однакові
<0:s1 > 0: s1> s2 5 strchr s1, гл Повертає покажчик на перше входження символу ch у рядок s1і рядок звідти далі 6 strstr s1, s2 Повертає перше входження рядка s2 у рядок s1
Наступна програма показує використання деяких з цих функцій в C ++:
#include #include using namespace std; int main() { char firstStr(50) = 'This is softwareTestingHelp.com'; char secStr(50) = 'a testing platform'; int len = strlen(firstStr); cout<<'Length of firstStr : '< Вихід:
Довжина першого вікна: 31
Результатний рядок (secStr): тестування програмного забезпечення
Порівняння firstStr та secStr: -31
Об’єднаний secStr: тестування програмного забезпечення для вас
Першим появою i у firststr at: s є softwareTestingHelp.com
Рядковий клас на C ++
Рядок у C ++, який визначається класом “std :: string”, є поданням потоку символів в об’єкт. Іншими словами, клас String - це колекція рядкових об'єктів. Цей клас рядків є частиною простору імен std і визначається в заголовку “string.h”.
Давайте обговоримо деякі основні відмінності між класом рядків та масивом символів.
- Хоча масиви символів, про які ми говорили вище, статично розподіляються під час компіляції, рядки є об'єктами і, отже, можуть бути динамічно розподілені.
- Оскільки масиви символів мають статичний характер, вони не можуть бути зменшені або розширені після їх визначення. Отже, якщо у нас є масив символів розміром 100, і я ініціалізував його словом “Привіт”, тоді решта місця витрачається даремно.
Char mystr (100) = “Привіт”;
Тут решта 95 місць витрачаються даремно.
На відміну від цього, рядкові об’єкти мають динамічний характер і займуть точний простір для значення.
- Символьні масиви швидші за продуктивністю, тоді як рядки повільніші.
- Масивні символи мають декілька функцій, що працюють на них, які можуть ними керувати. Клас String має безліч функцій, включаючи функції ітератора.
Це деякі основні відмінності між масивом символів та класом рядкових об’єктів.
Далі ми побачимо кілька прикладів класу рядків разом з деякими основними операціями, які виконуються над об'єктами класу рядків.
Приклад для оголошення та ініціалізації класу рядків.
#include #include using namespace std; int main() { string str='This is string object in C++'; cout<<'
String entered is :'<У наведеному вище прикладі ми оголосили та ініціалізували об’єкт рядка за допомогою класу “string”. Це простий приклад. Тепер давайте мати програму для зчитування рядка від користувача, а також продемонструємо кілька функцій рядка, включаючи пошук довжини та порівняння двох рядків.
#include #include using namespace std; int main() { string str; cout<<'Input the string
'; getline(cin,str); cout<<'
String entered is :'< Вихід:
Введіть рядок
SoftwareTestingHelp
Введено рядок: SoftwareTestingHelp
Довжина рядка str: 19
Два рядки рівні
Новий str1: SoftwareTestingHelp.com
str нова довжина: 0
На наведеній вище ілюстрації ми використовували численні функції рядків для маніпулювання рядками. Після оголошення рядка ми використовуємо функцію «getline» класу рядків для зчитування рядка зі стандартного вводу.
Коли ми прочитаємо рядок, ми знайдемо його довжину за допомогою функції “length”. Якщо нам потрібно порівняти два рядки, щоб оцінити, рівні вони чи ні, тоді ми можемо використати функцію “порівняння” класу рядків. Якщо функція повертає 0, тоді два рядки рівні, інакше функція повертає ненульове значення.
Ще одна функція полягає в додаванні іншого рядка в кінець існуючого рядка. Це функція “додати”. У цьому прикладі ми додаємо «.com» до вже існуючого рядка str1 зі значенням «тестування програмного забезпечення».
Остання функція у прикладі - це функція clear, яка використовується для очищення вмісту об’єкта, що викликає рядок. У цьому прикладі ми очищаємо вміст об’єкта str, щоб його довжина стала 0.
Висновок
У цьому підручнику ми розглянули масив символів, який також називається рядками у стилі С, а також основи класу рядків. Клас рядків має більше службових програм, таких як клас ітераторів, оскільки це клас контейнера.
Детальніше про клас рядків та його функції ми побачимо в наших майбутніх підручниках з STL !!
=> Завітайте сюди, щоб побачити навчальну серію C ++ для всіх.
Рекомендована література
- Сортування оболонки в C ++ з прикладами
- Функції дати та часу в C ++ з прикладами
- Рядок Java із підручником для буфера рядків та побудови рядків
- Сортування виділення в C ++ із прикладами
- Функції рядка Python
- Підручник із прикладами Python DateTime
- Вирізати команду в Unix з прикладами
- 70+ НАЙКРАЩИХ підручників для C ++, щоб навчитись програмуванню на C ++ БЕЗКОШТОВНО