strings c with examples
Intenzívny pohľad na základy reťazcov v C ++.
V tejto sérii C ++ sme až doteraz väčšinou diskutovali o číselných poliach v C ++. V tomto výučbe sa budeme zaoberať manipuláciou s poľami znakov, ktoré jednoducho nazývame „Struny“.
Pole znakov je väčšinou reťazec v štýle C, ktorý C ++ podporuje. Okrem polí znakov v štýle C podporuje C ++ aj triedu reťazcov „std :: string“. Ďalej v tomto výučbe rozoberieme oba typy reťazcov, ako aj rozdiely medzi nimi a programovanie každého typu v C ++.
=> Dajte si pozor na kompletný zoznam výukových programov C ++ v tejto sérii.
Čo sa dozviete:
Polia znakov (reťazce v štýle C)
Reťazec v štýle c je pole znakov ukončené prázdnym znakom „ 0“. Preto môžeme definovať pole typu char a rozmery alebo veľkosť polí a potom ho môžeme inicializovať na reťazec alebo pole znakov.
Upozorňujeme, že je to kompilátor, ktorý ukončuje reťazec nulovým znakom, takže ak inicializujeme pole znakov reťazcom (v dvojitej úvodzovke „“), musíme pri deklarovaní veľkosti poľa nechať pre nulový znak ďalší priestor. .
Zoberme si niekoľko príkladov deklarovania a inicializácie polí znakov.
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',' '};
Všetky vyššie uvedené definície sú platné definície reťazcov v štýle C v C ++. Upozorňujeme, že môžeme buď deklarovať skutočnú veľkosť, alebo môžeme nechať veľkosť prázdnu, aby kompilátor mohol prispôsobiť veľkosť v závislosti od reťazca, ktorý sme inicializovali.
Poďme na to Príklad čítania a zápisu znakových polí v C ++
Ďalej je uvedený jednoduchý program, ktorý načíta reťazec pomocou cin a na výstup ho použije cout.
#include #include using namespace std; int main() { char firstStr(100); cin>>firstStr; cout<<'you entered : '< Výstup 1:
SoftwareTestingHelp.com
ste zadali: SoftwareTestingHelp.com
Výstup 2:
Toto je reťazec v štýle C.
zadali ste: Toto
Ak porovnáme obidva výstupy, zistíme, že keď sme zadali prvý reťazec „SoftwareTestingHelp.com“, bol vytlačený tak, ako je.
Ale v druhom výstupe, aj keď sme zadali reťazec ako „Toto je reťazec v štýle C“, bol výstup iba „Tento“.
Rozdiel vo výstupe je ten, že operátor „>>“ cin, ktorý sa používa na čítanie reťazca, sa považuje za funkciu „scanf“ C, ktorá číta iba dovtedy, kým sa nestretne s priestorom. Preto je „cin s >>“ vhodné na čítanie polí znakov bez medzery.
vnútorné spojenie ľavé spojenie pravé spojenie
Preto zatiaľ čo došlo k druhému výstupnému priestoru, funkcia cin to vzala ako koniec reťazca a čítala iba prvé slovo.
Na prečítanie celého riadku znakov vrátane medzier používa C ++ funkciu „get“.
Nižšie je uvedený ukážkový program využívajúci funkciu get:
#include #include using namespace std; int main() { char firstStr(100); cin.get(firstStr,100); cout<<'you entered : '< Výkon:
Toto je softwareTestinghelp.com
zadali ste: Toto je softwareTestinghelp.com
Ako je uvedené v príklade , funkcia get cin používa dva argumenty. Prvý argument je premenná poľa znakov, v ktorej sa má čítať reťazec, zatiaľ čo druhý argument predstavuje maximálna veľkosť poľa.
Reťazce v štýle C tiež podporujú početné funkcie reťazcov, ktoré umožňujú používateľom manipulovať s reťazcami. Tieto funkcie sú definované v hlavičke „cstring“.
Ďalej uvádzame tabuľku, ktorá obsahuje zoznam rôznych funkcií reťazcov, pomocou ktorých je možné manipulovať s reťazcami v štýle C.
Nie Funkcia Argumenty Popis 1 strcpy s1, s2 Skopíruje reťazec s2 do reťazca s1 dva strcat s1, s2 Pripojí alebo zreťazí reťazec s2 na koniec reťazca s1 3 strlen s1 Vráti dĺžku reťazca s1 4 strcmp s1, s2 Vráti 0: s1 a s2 sú rovnaké
<0:s1 > 0: s1> s2 5 strchr s1, ch Vráti ukazovateľ na prvý výskyt znaku ch v reťazci s1 a reťazec odtiaľ ďalej 6 strstr s1, s2 Vráti prvý výskyt reťazca s2 v reťazci s1
Nasledujúci program ukazuje použitie niektorých z týchto funkcií v jazyku 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 : '< Výkon:
Dĺžka prvého str.: 31
Výsledný reťazec (secStr): testovanie softvéru
Porovnanie firstStr a secStr: -31
Concatenated secStr: softwareTesting pre vás
Prvý výskyt i v firststr at: s je softwareTestingHelp.com
Trieda reťazcov v C ++
Reťazec v C ++, ktorý je definovaný triedou „std :: string“, je reprezentácia toku znakov do objektu. Inými slovami, trieda String je kolekciou reťazcových objektov. Táto trieda reťazcov je súčasťou štandardného menného priestoru a je definovaná v hlavičke „string.h“.
Uveďme si niektoré základné rozdiely medzi triedou reťazcov a poľom znakov.
- Zatiaľ čo polia znakov, o ktorých sme hovorili vyššie, sú staticky alokované počas kompilácie, reťazce sú objekty, a preto je možné ich dynamicky alokovať.
- Pretože sú polia znakov statickej povahy, po definovaní ich nemožno zmenšiť ani rozšíriť. Ak teda máme pole znakov veľkosti 100 a ja som ho inicializoval na slovo „Hello“, zostávajúci priestor je zbytočný.
Char mystr (100) = „Dobrý deň“;
Tu zostáva zbytočných zvyšných 95 miest.
Oproti tomu majú reťazcové objekty dynamický charakter a zaberajú presný priestor pre danú hodnotu.
- Polia znakov majú rýchlejší výkon, zatiaľ čo reťazce sú pomalšie.
- Polia znakov majú niekoľko funkcií, ktoré s nimi môžu manipulovať. Trieda reťazcov má mnoho funkcií vrátane funkcií iterátora.
Tu sú niektoré zo základných rozdielov medzi poľom znakov a triedou objektov reťazcov.
Ďalej uvidíme niekoľko príkladov triedy reťazcov spolu s niektorými základnými operáciami, ktoré sa vykonávajú s objektmi triedy reťazcov.
Príklad na vyhlásenie a inicializáciu triedy reťazcov.
#include #include using namespace std; int main() { string str='This is string object in C++'; cout<<'
String entered is :'<Vo vyššie uvedenom príklade sme deklarovali a inicializovali reťazcový objekt pomocou triedy „string“. Toto je jednoduchý príklad. Teraz si pripravme program na načítanie reťazca od používateľa a ukážme tiež niekoľko funkcií reťazca vrátane nájdenia dĺžky a porovnania dvoch reťazcov.
#include #include using namespace std; int main() { string str; cout<<'Input the string
'; getline(cin,str); cout<<'
String entered is :'< Výkon:
Zadajte reťazec
SoftwareTestingHelp
Zadaný reťazec je: SoftwareTestingHelp
Dĺžka struny str je: 19
Dva reťazce sú rovnaké
Nový str1: SoftwareTestingHelp.com
str nová dĺžka: 0
Na vyššie uvedenom obrázku sme na manipuláciu s reťazcami použili početné reťazcové funkcie. Po deklarovaní reťazca použijeme na načítanie reťazca zo štandardného vstupu funkciu „getline“ triedy string.
Po prečítaní reťazca zistíme jeho dĺžku pomocou funkcie „dĺžka“. Ak potrebujeme porovnať dva reťazce a vyhodnotiť, či sú alebo nie sú rovnaké, môžeme použiť funkciu „porovnanie“ triedy reťazcov. Ak funkcia vráti 0, potom sú dva reťazce rovnaké, inak funkcia vráti nenulovú hodnotu.
Ešte ďalšou funkciou je pripojenie ďalšieho reťazca na koniec existujúceho reťazca. Toto je funkcia „pridať“. V tomto príklade pripojíme „.com“ k už existujúcemu reťazcu str1 s hodnotou „softwaretesting“.
Poslednou funkciou v príklade je funkcia clear, ktorá sa používa na vyčistenie obsahu vyvolávaného reťazcového objektu. V tomto príklade vyčistíme obsah objektu str tak, aby jeho dĺžka bola 0.
Záver
V tomto tutoriáli sme sa zaoberali poľom znakov, ktoré sa tiež nazýva ako reťazce v štýle C, spolu so základmi triedy reťazcov. Trieda reťazcov prichádza s ďalšími nástrojmi, ako je trieda iterátorov, pretože je to trieda kontajnerov.
Viac o triede reťazcov a jej funkciách uvidíme v našich pripravovaných tutoriáloch STL !!
=> Navštívte tu a pozrite si sériu školení pre C ++ pre všetkých.
Odporúčané čítanie
- Shell zoradený v C ++ s príkladmi
- Funkcie dátumu a času v C ++ s príkladmi
- Výukový program Java String s programom String Buffer a String Builder
- Výber Zoradiť v C ++ s príkladmi
- Funkcie reťazca Python
- Výukový program pre Python DateTime s príkladmi
- Vystrihnite príkaz v systéme Unix s príkladmi
- 70+ NAJLEPŠÍCH tutoriálov pre C ++ Naučte sa programovanie v C ++ ZDARMA