strings c with examples
Intensywne spojrzenie na podstawy ciągów znaków w C ++.
dlaczego Linux jest lepszy niż Windows
W tej serii C ++ do tej pory omawialiśmy głównie tablice numeryczne w C ++. W tym samouczku omówimy manipulację tablicami znaków, które nazywamy po prostu „ciągami znaków”.
Tablica znaków jest w większości ciągiem w stylu C, który obsługuje C ++. Oprócz tablic znaków w stylu C, C ++ obsługuje również klasę ciągów „std :: string”. Ponadto w tym samouczku omówimy oba typy ciągów, a także różnice między nimi oraz programowanie każdego typu w C ++.
=> Obejrzyj pełną listę samouczków C ++ z tej serii.
Czego się nauczysz:
Tablice znaków (ciągi w stylu C)
Łańcuch w stylu c to tablica znaków zakończona znakiem null „ 0”. Stąd możemy zdefiniować tablicę typu char i wymiary lub rozmiar tablic, a następnie możemy zainicjować ją jako ciąg znaków lub tablicę znaków.
Zwróć uwagę, że to kompilator kończy napis znakiem null, więc jeśli zainicjujemy tablicę znaków ciągiem (w podwójnym cudzysłowie „”), to musimy zostawić dodatkowe miejsce na znak null podczas deklarowania rozmiaru tablicy .
Weźmy kilka przykładów deklarowania i inicjowania tablic znaków.
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',' '};
Wszystkie powyższe definicje są poprawnymi definicjami ciągów w stylu C w C ++. Zwróć uwagę, że możemy albo zadeklarować rzeczywisty rozmiar, albo pozostawić rozmiar pusty, aby kompilator mógł dostosować rozmiar w zależności od zainicjowanego ciągu.
Zajmijmy się Przykład czytania i pisania tablicy znaków w C ++
Poniżej podano prosty program, który czyta napis używając cin i wyprowadza go za pomocą cout.
#include #include using namespace std; int main() { char firstStr(100); cin>>firstStr; cout<<'you entered : '< Wyjście 1:
SoftwareTestingHelp.com
podałeś: SoftwareTestingHelp.com
Wyjście 2:
To jest sznurek w stylu C.
wpisałeś: This
Jeśli porównamy oba dane wyjściowe, zobaczymy, że kiedy wprowadziliśmy pierwszy ciąg „SoftwareTestingHelp.com”, został on wydrukowany tak, jak jest.
Ale w drugim wyjściu, mimo że wpisaliśmy ciąg jako „To jest ciąg w stylu C”, wynikiem było tylko „To”.
Różnica w wynikach polega na tym, że operator „>>” funkcji cin, który jest używany do odczytu łańcucha, jest traktowany jako funkcja „scanf” języka C, która czyta tylko do napotkanego miejsca. Dlatego „cin with >>” nadaje się do odczytywania tablic znaków bez spacji.
pytania do wywiadu na temat mavena i jenkinsa
Stąd, podczas gdy napotkano drugą przestrzeń wyjściową, funkcja cin przyjęła ją jako koniec łańcucha i odczytała tylko pierwsze słowo.
Aby odczytać cały wiersz znaków, w tym spacje, C ++ używa funkcji „get”.
Przykładowy program używający funkcji get jest pokazany poniżej:
#include #include using namespace std; int main() { char firstStr(100); cin.get(firstStr,100); cout<<'you entered : '< Wynik:
To jest softwareTestinghelp.com
wszedłeś: To jest softwareTestinghelp.com
Jak pokazano na przykładzie , funkcja get funkcji cin używa dwóch argumentów. Pierwszy argument to zmienna tablicowa znaków, w której ciąg ma być odczytywany, podczas gdy drugi argument to maksymalny rozmiar tablicy.
Łańcuchy w stylu C obsługują również liczne funkcje łańcuchowe, które pozwalają użytkownikom manipulować napisami. Funkcje te są zdefiniowane w nagłówku „cstring”.
Poniżej prezentujemy tabelę, która zawiera listę różnych funkcji napisów, których można użyć do manipulowania napisami w stylu C.
Nie Funkcjonować Argumenty Opis jeden strcpy s1, s2 Kopiuje ciąg s2 do łańcucha s1 dwa strcat s1, s2 Dołącza lub łączy ciąg s2 na końcu łańcucha s1 3 strlen s1 Zwraca długość łańcucha s1 4 strcmp s1, s2 Zwraca 0: s1 i s2 są takie same
<0:s1 > 0: s1> s2 5 strchr s1, rozdz Zwraca wskaźnik do pierwszego wystąpienia znaku ch w łańcuchu s1 i ciągu od tego momentu 6 strstr s1, s2 Zwraca pierwsze wystąpienie ciągu s2 w ciągu s1
Poniższy program przedstawia użycie niektórych z tych funkcji w 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 : '< Wynik:
Długość pierwszego odcinka: 31
Wynikowy ciąg (secStr): testowanie oprogramowania
Porównanie firstStr i secStr: -31
Połączone secStr: oprogramowanie Testowanie dla Ciebie
Pierwsze wystąpienie i w firststr na: s to softwareTestingHelp.com
Klasa ciągów w C ++
Łańcuch w C ++, który jest zdefiniowany przez klasę „std :: string”, jest reprezentacją strumienia znaków w obiekcie. Innymi słowy, klasa String to zbiór obiektów typu string. Ta klasa łańcuchowa jest częścią przestrzeni nazw standardowej i jest zdefiniowana w nagłówku „string.h”.
Omówmy niektóre podstawowe różnice między klasą łańcuchów a tablicą znaków.
- Podczas gdy tablice znaków, które omówiliśmy powyżej, są przydzielane statycznie podczas kompilacji, łańcuchy znaków są obiektami i dlatego mogą być przydzielane dynamicznie.
- Ponieważ tablice znaków mają charakter statyczny, po zdefiniowaniu nie można ich skurczyć ani rozwinąć. Stąd, jeśli mamy tablicę znaków o rozmiarze 100 i zainicjowałem ją słowem „Hello”, to pozostałe miejsce jest marnowane.
Char mystr (100) = „Cześć”;
Tutaj pozostałe 95 lokacji jest marnowanych.
W przeciwieństwie do tego obiekty łańcuchowe mają charakter dynamiczny i zajmują dokładną przestrzeń na wartość.
- Tablice znaków działają szybciej, a ciągi wolniejsze.
- Tablice znakowe mają kilka działających na nich funkcji, które mogą nimi manipulować. Klasa String posiada wiele funkcji, w tym funkcje iteracyjne.
Oto niektóre z podstawowych różnic między tablicą znaków a klasą obiektów łańcuchowych.
Następnie zobaczymy kilka przykładów klasy string wraz z kilkoma podstawowymi operacjami, które są wykonywane na obiektach klasy string.
Przykład do zadeklarowania i zainicjowania klasy ciągów.
#include #include using namespace std; int main() { string str='This is string object in C++'; cout<<'
String entered is :'<W powyższym przykładzie zadeklarowaliśmy i zainicjowaliśmy obiekt typu string przy użyciu klasy „string”. To jest prosty przykład. Teraz przygotujmy program, który odczyta ciąg od użytkownika, a także zademonstruje kilka funkcji ciągów, w tym znalezienie długości i porównanie dwóch ciągów.
#include #include using namespace std; int main() { string str; cout<<'Input the string
'; getline(cin,str); cout<<'
String entered is :'< Wynik:
Wprowadź ciąg
OprogramowanieTestowaniePomoc
Wprowadzony ciąg to: SoftwareTestingHelp
Długość sznurka to: 19
Dwa ciągi są równe
Nowy str1: SoftwareTestingHelp.com
lista darmowych dostawców poczty e-mail w usa
str nowa długość: 0
Na powyższej ilustracji użyliśmy wielu funkcji łańcuchowych do manipulowania napisami. Po zadeklarowaniu łańcucha używamy funkcji „getline” klasy string, aby odczytać napis ze standardowego wejścia.
Po przeczytaniu napisu ustalamy jego długość za pomocą funkcji „length”. Jeśli musimy porównać dwa łańcuchy, aby ocenić, czy są równe, czy nie, możemy użyć funkcji „porównaj” klasy string. Jeśli funkcja zwraca 0, to dwa ciągi są równe, w przeciwnym razie funkcja zwraca wartość niezerową.
Jeszcze inną funkcją jest dołączenie kolejnego ciągu na końcu istniejącego ciągu. To jest funkcja „dołączania”. W tym przykładzie dodajemy „.com” do już istniejącego ciągu str1 z wartością „softwaretesting”.
Ostatnią funkcją w przykładzie jest funkcja clear, która służy do czyszczenia zawartości wywołującego obiektu ciągu. W tym przykładzie wyczyścimy zawartość obiektu str, tak aby jego długość wynosiła 0.
Wniosek
W tym samouczku omówiliśmy tablicę znaków, która jest również nazywana ciągami znaków w stylu C, wraz z podstawami klasy ciągów. Klasa String zawiera więcej narzędzi, takich jak klasa iteratora, ponieważ jest to klasa kontenera.
Więcej o klasie string i jej funkcjach dowiemy się w nadchodzących samouczkach STL !!
=> Odwiedź tutaj, aby zobaczyć serię szkoleń C ++ dla wszystkich.
rekomendowane lektury
- Sortowanie powłoki w C ++ z przykładami
- Funkcje daty i czasu w C ++ z przykładami
- Ciąg Java z buforem ciągów i samouczek dotyczący tworzenia ciągów
- Wybór sortowania w C ++ z przykładami
- Funkcje łańcuchowe w Pythonie
- Python DateTime Tutorial z przykładami
- Polecenie Cut w systemie Unix z przykładami
- 70+ NAJLEPSZYCH samouczków C ++ do nauki programowania w C ++ ZA DARMO