String Array в C ++ - Доступ до елементів з масиву рядків - Виділення

Зміст:

Anonim

Вступ до String Array в C ++

У C ++ існує багато типів даних, як ціле число, float, символ, рядок. Тип рядкових даних - це масив символів, що закінчується нульовим символом ('\ 0'), який позначає кінець масиву або рядка. У C не було їх як такої строки типу даних, через що нам довелося сформувати масив символів для формування рядка. У C ++ у нас є вбудована рядок даних.

Приклад символу: 'a' або 'A'

Приклад рядка (C ++): "Англійська мова"

Рядок: масив символів: String (0) = 'E'

Рядок (1) = 'n'

Рядок (2) = 'g'

Рядок (3) = 'l'

Рядок (4) = 'я'

Рядок (5) = 's'

Рядок (6) = 'h'

Рядок (7) = '\ 0'

Рядки можуть бути оголошені, записані та надруковані безпосередньо на C ++. Також до кожного символу рядка можна отримати доступ, використовуючи індекс, аналогічний індексації в масиві. У випадку з рядком, коли ми читаємо у вигляді масиву символів за допомогою scanf (), він зупинить рядок або функцію читання, коли знайде перший пробіл. Щоб уникнути цього, функція get () може бути використана. Це прочитає цілий рядок і перестане читати лише тоді, коли користувач натисне "Enter".

String Array в C ++ масив з декількох рядків

String масив або Array of string - це масив з декількох рядків. Це можна оголосити так:

string Animals(4) = ("Elephant", "Fox", "Lion", "Tiger");

Для друку всього масиву рядків для циклу можна використовувати:

Код:

for(int i = 0; i<4; i++) (
cout << Animals(i) << endl;
)

Вихід:

Як отримати доступ до елементів з масиву рядків?

Масив рядків схожий на двовимірний масив. Перший вимір або індекс вказує індекс рядка з масиву, як 1- е слово / рядок або 2- е слово / рядок тощо. Тоді як другий вимір або індекс вказує, який символ у цьому конкретному слові / рядку.

Щоб пояснити це наочним прикладом:

Animals(2)(1) = 'i'

У наведеному вище прикладі перший індекс '2' визначає, що це другий рядок із масиву: «Тигр». Другий індекс '1' визначає, що це друга літера або індекс 1 від слова «Тигр». Використовуючи двовимірну індексацію кожного символу з кожного рядка, можна легко отримати доступ.

Виділення або визначення масиву рядків

Існують різні методи розподілу масиву рядків:

1. 2D масив Char (який також можна використовувати в C)

char name (максимальна кількість елементів) (макс. розмір кожного елемента)

char color (4) (8) = ("синій", "червоний", "білий", "чорний")

Код:

int main() (
char color(4)(8) = (“blue”, “red”, “white”, “black”);
for(int i = 0; i<4; i++) (
cout << color(i) << endl;
)
)

Вихід :

Тут колір масиву має фіксований розмір, тобто фіксується кількість елементів, а також фіксується кількість символів або розміри елемента. Максимальна кількість елементів, які можна визначити, - 4, і кожен може містити не більше 8 символів. Це основний бар'єр у масиві 2d символів.

2. Масив з рядком ключового слова (можливий лише в C ++)

ім'я рядка (максимальна кількість елементів)

color string (4) = ("синій", "червоний", "білий", "чорний")

Код:

int main() (
string color(4) = (“blue”, “red”, “white”, “black”);
for(int i = 0; i<4; i++) (
cout << color(i) << endl;
)
)

Вихід :

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

3. Використання векторів в C ++

векторна назва

векторний колір

Код:

#include
#include
using namespace std;
int main()
(
vector color;
color.push_back("blue");
color.push_back("red");
color.push_back("white");
color.push_back("black");
for(int i = 0; i cout << color(i) << endl;
)
return 0;
)
#include
#include
using namespace std;
int main()
(
vector color;
color.push_back("blue");
color.push_back("red");
color.push_back("white");
color.push_back("black");
for(int i = 0; i cout << color(i) << endl;
)
return 0;
)

Вихід:

Тут вона динамічно розподіляється, пам'ять виділяється з купи. Розмір не фіксований. Він може збільшуватися або зменшуватися відповідно до кількості елементів. У разі динамічного розподілу рядкового масиву за допомогою команди “new” нам потрібно вручну розібрати виділену пам’ять. Але у випадку вектора це не обов’язково. Перерозподіл можливий у векторному, тоді як це неможливо в динамічно розподіленому масиві.

4. Проходження рядкового масиву у функції

String Array може бути переданий функції, подібній тому, як ми передаємо масив.

Код:

#include
#include
using namespace std;
void display(string s(5))(
cout << s(2) ;
)
int main() (
string str(5) = ("Good", "Bad", "Positive", "Negative");
display(str);
)

Вихід :

Тут ми передаємо str string масиву як параметр функції "display", яка друкує 3- й елемент рядкового масиву ("Позитивний").

5. Копірування з String Array в інший

Щоб копіювати з String Array в інший, ми повинні копіювати кожен елемент окремо, але весь масив неможливо скопіювати за один кадр.

Код:

int main() (
string str(4) = ("Good", "Bad", "Positive", "Negative");
string s(4);
// s = str; -à This line gives error as the whole array cannot be copied at a single go
// It can be copied as shown below
for( int i=0; i<4; i++) (
s(i) = str(i);
)
for(int i=0; i<4; i++) (
cout << "The element " << i+1 << " of copied array = " << s(i) << " is same as
the corresponding element in main array which is " << str(i) << endl;
)
)

Вихід помилки:

Вихід:

Тут, коли ми спробували скопіювати весь основний рядковий масив (str) в інший рядковий масив, ми отримали помилку (як показано на скріншоті1), тоді як, коли ми копіювали його елемент на елемент, str копіювався в s і ми могли перевірити це побачивши другий знімок екрана.

Висновок

Таким чином, рядок - це тип даних, який є масивом символів, і він присутній лише в C ++. В C ми оголосили як масив символів. Масив рядків - це масив, що складається з багатьох рядків. При оголошенні статично або динамічно він має фіксований розмір, а коли оголошується у формі вектора, розмір не фіксується. Кожен елемент та символ у конкретному елементі легко отримати доступ за допомогою індексації рядкового масиву.

Рекомендовані статті

Це посібник зі String Array в C ++. Тут ми обговорюємо, як зайвий елемент у String Array в C ++ та розподіл String Array в C ++. Ви також можете ознайомитись з іншими пов'язаними з нами статтями, щоб дізнатися більше -

  1. String Array в Python
  2. StringBuffer на Java
  3. Функції струнних пітонів
  4. Масиви в C ++
  5. Вступ до рядкового масиву в C #
  6. Топ-11 особливостей та переваг C ++
  7. Топ-8 порівнянь рядків і StringBuilder
  8. Робота масиву в Unix із синтаксисом?