strings c with examples
Intenzivní pohled na základy řetězců v C ++.
V této sérii C ++ jsme až dosud většinou diskutovali o numerických polích v C ++. V tomto tutoriálu probereme manipulaci s poli znaků, které jednoduše nazýváme „Strings“.
Pole znaků je většinou řetězec ve stylu C, který C ++ podporuje. Kromě pole znaků ve stylu C podporuje C ++ také třídu řetězců „std :: string“. Dále v tomto kurzu probereme oba typy řetězců a také rozdíly mezi nimi ao programování každého typu v C ++.
=> Dávejte pozor na kompletní seznam výukových programů C ++ v této sérii.
Co se naučíte:
Pole znaků (řetězce ve stylu C)
Řetězec ve stylu c je pole znaků zakončené nulovým znakem „ 0“. Proto můžeme definovat pole typu char a rozměry nebo velikost polí a poté jej můžeme inicializovat na řetězec nebo pole znaků.
Všimněte si, že je to kompilátor, který ukončuje řetězec znakem null, takže pokud inicializujeme pole znaků řetězcem (v uvozovkách „“), musíme při deklaraci velikosti pole ponechat pro znak null další prostor .
Vezměme si několik příkladů deklarace a inicializace polí znaků.
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šechny výše uvedené definice jsou platné definice řetězců ve stylu C v C ++. Všimněte si, že můžeme buď deklarovat skutečnou velikost, nebo můžeme nechat velikost prázdnou, aby kompilátor mohl přizpůsobit velikost v závislosti na řetězci, který jsme inicializovali.
Pojďme začít Příklad čtení a zápisu pole znaků v C ++
Níže je uveden jednoduchý program, který čte řetězec pomocí cin a vydává jej pomocí cout.
#include #include using namespace std; int main() { char firstStr(100); cin>>firstStr; cout<<'you entered : '< Výstup 1:
SoftwareTestingHelp.com
zadali jste: SoftwareTestingHelp.com
Výstup 2:
Toto je řetězec ve stylu C.
zadali jste: Toto
Pokud porovnáme oba výstupy, zjistíme, že když jsme zadali první řetězec „SoftwareTestingHelp.com“, byl vytištěn tak, jak je.
Ale ve druhém výstupu, i když jsme zadali řetězec jako „This is C-style string“, byl výstup pouze „This“.
Rozdíl ve výstupu je ten, že operátor „>>“ cin, který se používá ke čtení řetězce, je považován za funkci „scanf“ C, která čte pouze do té doby, než narazí na prostor. Proto je „cin with >>“ vhodné číst pole znaků bez mezery.
ukázkový životopis pro zkušeného testera softwaru
Zatímco tedy došlo k druhému výstupnímu prostoru, funkce cin to vzala jako konec řetězce a přečetla pouze první slovo.
Aby bylo možné přečíst celý řádek znaků včetně mezer, používá C ++ funkci „get“.
Níže je uveden ukázkový program využívající funkci get:
#include #include using namespace std; int main() { char firstStr(100); cin.get(firstStr,100); cout<<'you entered : '< Výstup:
Toto je softwareTestinghelp.com
zadali jste: Toto je softwareTestinghelp.com
Jak je ukázáno v příkladu , funkce get cin používá dva argumenty. První argument je proměnná pole znaků, ve které se má číst řetězec, zatímco druhý argument je maximální velikost pole.
Řetězce ve stylu C také podporují četné funkce řetězců, které uživatelům umožňují manipulovat s řetězci. Tyto funkce jsou definovány v záhlaví „cstring“.
Níže uvádíme tabulku, která uvádí různé funkce řetězců, které lze použít k manipulaci s řetězci ve stylu C.
Nedělej Funkce Argumenty Popis 1 strcpy s1, s2 Zkopíruje řetězec s2 do řetězce s1 dva strcat s1, s2 Připojí nebo zřetězí řetězec s2 na konec řetězce s1 3 strlen s1 Vrátí délku řetězce s1 4 strcmp s1, s2 Vrací 0: s1 a s2 jsou stejné
<0:s1 > 0: s1> s2 5 strchr s1, ch Vrátí ukazatel na první výskyt znaku ch v řetězci s1 a na řetězec odtud dále 6 strstr s1, s2 Vrátí první výskyt řetězce s2 v řetězci s1
Následující program ukazuje použití některých z těchto funkcí v 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ýstup:
Délka firstStr: 31
Výsledný řetězec (secStr): softwareTesting
Porovnání firstStr a secStr: -31
Concatenated secStr: softwareTesting pro vás
První výskyt i in firststr at: s je softwareTestingHelp.com
Řetězcová třída v C ++
Řetězec v C ++, který je definován třídou „std :: string“, je reprezentace proudu znaků do objektu. Jinými slovy, třída String je kolekce řetězcových objektů. Tato třída řetězců je součástí standardního jmenného prostoru a je definována v záhlaví „string.h“.
Pojďme si promluvit o několika základních rozdílech mezi třídou řetězců a polem znaků.
- Zatímco pole znaků, o nichž jsme hovořili výše, jsou staticky alokována během doby kompilace, řetězce jsou objekty, a proto je lze dynamicky alokovat.
- Protože pole znaků mají statickou povahu, nelze je po definici zmenšit ani rozbalit. Pokud tedy máme pole znaků o velikosti 100 a já jsem ho inicializoval na slovo „Hello“, zbylé místo je zbytečné.
Char mystr (100) = „Ahoj“;
Zde zbylo zbylých 95 míst.
Na rozdíl od toho mají řetězcové objekty dynamickou povahu a zabírají přesné místo pro hodnotu.
- Pole znaků mají rychlejší výkon, zatímco řetězce jsou pomalejší.
- Pole znaků mají několik funkcí, které s nimi mohou manipulovat. Řetězec má mnoho funkcí včetně funkcí iterátoru.
Toto jsou některé ze základních rozdílů mezi znakovým polem a řetězcovou třídou objektu.
Dále uvidíme několik příkladů třídy řetězců spolu s některými základními operacemi, které se provádějí s objekty třídy řetězců.
Příklad k deklaraci a inicializaci třídy řetězce.
#include #include using namespace std; int main() { string str='This is string object in C++'; cout<<'
String entered is :'<Ve výše uvedeném příkladu jsme deklarovali a inicializovali objekt řetězce pomocí třídy „string“. Toto je jednoduchý příklad. Nyní si připravme program, který načte řetězec od uživatele, a také předvedeme několik funkcí řetězce, včetně zjištění délky a porovnání dvou řetězců.
#include #include using namespace std; int main() { string str; cout<<'Input the string
'; getline(cin,str); cout<<'
String entered is :'< Výstup:
Zadejte řetězec
SoftwareTestingHelp
Zadaný řetězec je: SoftwareTestingHelp
Délka řetězce str je: 19
Dva řetězce jsou stejné
Nová str1: SoftwareTestingHelp.com
str nová délka: 0
Na výše uvedeném obrázku jsme k manipulaci s řetězci použili řadu řetězcových funkcí. Po deklaraci řetězce použijeme funkci „getline“ třídy string ke čtení řetězce ze standardního vstupu.
Jakmile si přečteme řetězec, zjistíme jeho délku pomocí funkce „length“. Pokud potřebujeme porovnat dva řetězce, abychom mohli vyhodnotit, zda jsou stejné nebo ne, můžeme použít funkci „porovnat“ třídy řetězců. Pokud funkce vrací 0, pak jsou dva řetězce stejné, jinak funkce vrací nenulovou hodnotu.
Ještě další funkcí je přidání dalšího řetězce na konec stávajícího řetězce. Toto je funkce „připojit“. V tomto příkladu připojíme „.com“ k již existujícímu řetězci str1 s hodnotou „softwaretesting“.
Poslední funkcí v příkladu je funkce clear, která se používá k vymazání obsahu objektu vyvolávajícího řetězec. V tomto příkladu vyčistíme obsah objektu str tak, aby jeho délka byla 0.
Závěr
V tomto kurzu jsme popsali pole znaků, které se také nazývá jako řetězce ve stylu C, spolu se základy třídy řetězců. Třída String přichází s více nástroji, jako je třída iterátoru, protože je to třída kontejneru.
Více o třídě řetězců a jejích funkcích uvidíme v našich připravovaných výukových programech STL !!
=> Navštivte zde a prohlédněte si sérii školení C ++ pro všechny.
Doporučené čtení
- Shell Seřadit v C ++ s příklady
- Funkce data a času v C ++ s příklady
- Výukový program Java String s funkcí String Buffer a String Builder
- Výběr Seřadit v C ++ s příklady
- Funkce řetězce Python
- Výukový program Python DateTime s příklady
- Vyjmout příkaz v Unixu s příklady
- 70+ NEJLEPŠÍCH C ++ návodů, jak se naučit programování v C ++ ZDARMA