Różnica między tablicą znaków a ciągiem znaków

Autor: Laura McKinney
Data Utworzenia: 1 Kwiecień 2021
Data Aktualizacji: 6 Móc 2024
Anonim
Różnica między tablicą znaków a ciągiem znaków - Technologia
Różnica między tablicą znaków a ciągiem znaków - Technologia

Zawartość


C ++ obsługuje oba, Tablica znaków i ciąg znaków, ponieważ C ++ ma znaczne zalety w korzystaniu z nich obu. Jednak niezdolność do działania na tablicy znaków powoduje rozwój łańcucha klas. Zarówno tablica znaków, jak i ciąg znaków zawierają sekwencję znaków. Ale podstawową różnicą między tablicą znaków i łańcuchem znaków jest to, że „tablica znaków” nie może być obsługiwana za pomocą standardowych operatorów, podczas gdy obiekty „łańcuch” mogą być obsługiwane za pomocą standardowych operatorów. Przeanalizujmy inne różnice między tablicą znaków a ciągiem znaków.

  1. Wykres porównania
  2. Definicja
  3. Kluczowe różnice
  4. Wniosek

Wykres porównania

Podstawa do porównaniaTablica znakówStrunowy
PodstawowyTablica znaków to zbiór zmiennych o typie danych znakowych.String jest klasą, a zmienne string są przedmiotem klasy „string”.
Składniachar tablica_nazwa;ciąg string_name;
IndeksowanieIndywidualny znak w tablicy znaków można uzyskać poprzez jego indeks w tablicy.W ciągu można uzyskać dostęp do określonego znaku za pomocą funkcji „string_name.charAt (index)”.
Typ danychTablica znaków nie definiuje typu danych.Ciąg znaków określa typ danych w C ++.
OperatorzyOperatory w C ++ nie mogą być stosowane do tablicy znaków.Możesz zastosować standardowy operator C ++ do łańcucha.
GranicaGranice tablic można łatwo przekroczyć.Granice nie zostaną przekroczone.
DostępSzybki dostęp.Powolny dostęp.


Definicja tablicy znaków


Tablica znaków to zbiór zmiennych typu danych „char”; może to być jednowymiarowy lub dwuwymiarowy. Jest również nazywany „ciągiem zakończonym zerem”. Tablica znaków to sekwencja znaków przechowywanych w kolejnych adresach pamięci. W tablicy znaków do określonego znaku można uzyskać dostęp poprzez jego indeks. „Znak zerowy” kończy tablicę znaków ”.

Weźmy przykład tablicy znaków: -

nazwa char = {A, j, a, y, 0}; lub char name = "Ajay";

W tym przypadku „char” jest typem danych znakowych, „name” to nazwa zmiennej tablicy znaków. Pokazałem dwa sposoby inicjalizacji tablicy znaków. W pierwszej metodzie null jest wyraźnie wymieniony, aw drugiej metodzie kompilator automatycznie wstawia null.

Koniec łańcucha jest zawsze znakiem zerowym; jest to znak kończący tablicę znaków. Tablica znaków nie jest wbudowanym typem danych; tworzymy tablicę znaków, deklarując ją. Nie można zastosować standardowych operatorów do tablicy znaków. Aby operować na tablicy znaków, istnieje kilka wbudowanych funkcji, takich jak, (strlen (), strlwr (), strupr (), strcat ()). Ponieważ standardowych operatorów nie można zastosować do tablicy znaków, nie mogą brać udziału w żadnym wyrażeniu.


Można również utworzyć wskaźnik znaków do tablicy znaków.

Rozumiemy to na przykładzie.

char s1 = "Hello"; char s2 = „Sir”; s1 = s1 + s2; // nie można zastosować operatorów błędów s2 = s1; // błąd Wskaźnik znaku char * s = "Morning"; char * p; p = s; // wykonuje

W powyższym przykładzie zadeklarowaliśmy dwie tablice znaków s1, s2 i dwa wskaźniki znaków s i p. Tablica znaków s1 i s2 są inicjowane, widzimy, że ani operator dodawania (+), ani operator przypisania nie działają na tablicy znaków. Ale wskaźnik znaku można przypisać do innego wskaźnika znaku.

Pamiętaj, że po zainicjowaniu tablicy znaków nie można jej ponownie zainicjować na innym zestawie znaków. Dostęp do tablicy znaków lub łańcucha zakończonego znakiem zerowym jest szybki w porównaniu do łańcucha w C ++.

Definicja ciągu znaków

Ciąg nie jest wbudowanym typem danych C ++. Jest to obiekt klasy typu „string”. Podobnie jak w C ++ tworzenie klasy jest jak tworzenie „typu”. Klasa „string” jest częścią biblioteki C ++. Przechowuje zestaw znaków lub tablicę znaków jako całość. Istnieją trzy powody rozwoju standardowej klasy ciągów.

  • Pierwszy to „spójność”, tablice znaków same w sobie nie są typami danych.
  • druga to „wygoda”, nie można używać standardowych operatorów w tablicy znaków.
  • Trzeci to „bezpieczeństwo”, granice tablic można łatwo przekroczyć.

Pozwól nam zrozumieć ciągi znaków na przykładzie.

ciąg s1; s1 = „Cześć”; ciąg s2 („Dzień dobry”); ciąg s3 = „Hennery”; ciąg s4;

W powyższej deklaracji deklarowane są cztery zmienne łańcuchowe lub obiekty (s1, s2, s3, s4). W powyższej deklaracji pokazałem trzy sposoby inicjowania łańcucha. Ciąg s1 jest deklarowany, a następnie oddzielnie inicjowany. Ciąg s2 jest inicjowany przez konstruktor klasy „String”. Ciąg s3 jest inicjalizowany w momencie deklaracji, podobnie jak normalny typ danych. Możemy zastosować standardowy operator do zmiennych łańcuchowych.

s4 = s1; // przypisanie jednego obiektu łańcuchowego do drugiego s4 = s1 + s2; // dodanie dwóch ciągów i zapisanie wyniku w trzecim ciągu, jeśli (s3> s2) // porównanie dwóch ciągów s5 (s1); tworzenie nowego obiektu ciągu za pomocą istniejącego obiektu ciągu

W powyższym kodzie na łańcuchu stosowane są różne operatory i wykonywane są różne operacje. Pierwsza instrukcja kopiuje jeden obiekt łańcuchowy do innego obiektu łańcuchowego. W drugiej instrukcji dwa ciągi są łączone i przechowywane w trzecim ciągu. W trzeciej instrukcji porównywane są dwa ciągi. W czwartej instrukcji nowy obiekt ciągu jest tworzony przy użyciu już istniejącego obiektu ciągu.

Dostęp do łańcucha jest powolny w porównaniu do tablicy znaków lub łańcucha zakończonego zerem.

Kluczowe różnice między tablicą znaków a ciągiem znaków

  1. Tablica znaków to zbiór zmiennych o typie danych znakowych. String to klasa, która tworzy instancję w celu deklarowania napisów.
  2. Za pomocą wartości indeksu można uzyskać dostęp do znaku z tablicy znaków. Z drugiej strony, jeśli chcesz uzyskać dostęp do określonego znaku w ciągu, możesz uzyskać do niego dostęp za pomocą funkcji string's_name.charAt (indeks).
  3. Ponieważ tablica nie jest typem danych, podobnie znak również nie jest typem danych. Z drugiej strony String będący klasą działa jako typ referencyjny, dlatego można powiedzieć, że String jest typem danych.
  4. Nie możesz zastosować żadnego operatora do tablicy znaków, natomiast możesz zastosować operatory na String.
  5. Będąc tablicą tablica znaków ma stałą długość, a jej granice można łatwo przekroczyć. Gdzie ciąg nie ma żadnych granic.
  6. Elementy tablicy są przechowywane w ciągłej lokalizacji w pamięci, dzięki czemu można uzyskać do nich dostęp szybciej niż zmienna łańcuchowa.

Wniosek:

Niemożność działania na tablicy znaków podniosła rozwój standardowej klasy łańcuchów.