Úvod do řetězce řetězců v C ++
Existuje mnoho typů dat v C ++, jako je celé číslo, float, znak, řetězec. Datový typ řetězce je pole znaků končící nulovým znakem ('\ 0'), které označuje konec pole nebo řetězce. C je neměl jako takový řetězec datových typů, kvůli čemuž jsme museli tvořit pole znaků, abychom vytvořili řetězec. V C ++ máme zabudovaný řetězec datového typu.
Příklad znaku: „a“ nebo „A“
Příklad řetězce (C ++): „English“
Řetězec: pole znaku: Řetězec (0) = 'E'
Řetězec (1) = 'n'
Řetězec (2) = 'g'
Řetězec (3) = 'l'
Řetězec (4) = 'i'
Řetězec (5) = 's'
Řetězec (6) = 'h'
Řetězec (7) = '\ 0'
Řetězce lze deklarovat, psát a tisknout přímo v C ++. Ke každému znaku v řetězci lze přistupovat také pomocí indexu podobného indexování v poli. V případě řetězce, když čteme ve formě znakového pole pomocí scanf (), zastaví řetězec nebo funkci čtení, když najde první mezeru. Abyste tomu zabránili, lze použít funkci get (). Tím se přečte celý řádek a zastaví se čtení, pouze když uživatel stiskne 'Enter'.
Řetězcové pole v C ++ pole více řetězců
Řetězcové pole nebo pole řetězců je pole více řetězců. Lze to prohlásit takto:
string Animals(4) = ("Elephant", "Fox", "Lion", "Tiger");
K tisku celého řetězce řetězců lze použít smyčku:
Kód:
for(int i = 0; i<4; i++) (
cout << Animals(i) << endl;
)
Výstup:
Jak přistupovat k elementům z řetězce String?
Pole řetězců je podobné dvojrozměrnému poli. První dimenze nebo index určuje index řetězce z prvního slova / řetězce typu pole nebo druhého slova / řetězce atd. Zatímco druhá dimenze nebo index určuje, který znak v tomto konkrétním slově / řetězci.
Vysvětlit to jasným příkladem:
Animals(2)(1) = 'i'
Ve výše uvedeném příkladu první index „2“ určuje, že se jedná o druhý řetězec z pole: „Tiger“. Druhý index „1“ určuje, že se jedná o druhé písmeno nebo index 1 ze slova „Tiger“. Pomocí 2dimenzionálního indexování lze snadno získat přístup ke všem znakům z každého řetězce.
Přidělení nebo definování řetězce řetězců
Existují různé způsoby alokace řady řetězců:
1. 2D pole Char (které lze použít také v C)
char Jméno (maximální počet prvků) (maximální velikost každého prvku)
char color (4) (8) = („modrá“, „červená“, „bílá“, „černá“)
Kód:
int main() (
char color(4)(8) = (“blue”, “red”, “white”, “black”);
for(int i = 0; i<4; i++) (
cout << color(i) << endl;
)
)
Výstup :
Zde má barva pole pevnou velikost, to znamená, že počet prvků je fixní a také počet znaků nebo velikostí prvku je také fixní. Maximální počet prvků, které lze definovat, jsou 4 a každý z nich může mít maximálně 8 znaků. Toto je hlavní překážka v poli 2d znaků.
2. Pole s klíčovým slovem String (možné pouze v C ++)
název řetězce (maximální počet prvků)
barva řetězce (4) = („modrá“, „červená“, „bílá“, „černá“)
Kód:
int main() (
string color(4) = (“blue”, “red”, “white”, “black”);
for(int i = 0; i<4; i++) (
cout << color(i) << endl;
)
)
Výstup :
Zde je pevná pouze jedna dimenze, když ji deklarujeme jako pole řetězců. Je stanoven pouze počet prvků. Velikost prvku se může lišit. Ale zadáním druhé dimenze můžeme přistupovat nebo zobrazovat konkrétní znak z příslušného řetězce.
3. Použití vektorů v C ++
vektorové jméno
vektorová barva
Kód:
#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;
)
Výstup:
Zde je dynamicky alokováno, paměť je přidělena z haldy. Velikost není pevná. Může se zvyšovat nebo snižovat podle počtu prvků. V případě dynamického přidělení řetězce řetězců pomocí příkazu „new“, musíme ručně přidělit přidělenou paměť ručně. Ale v případě vektoru to není nutné. Přerozdělení je možné ve vektoru, zatímco to není možné v dynamicky alokovaném poli.
4. Předávání řetězce řetězců ve funkci
Řetězcové pole lze přenést na funkci podobnou tomu, jak předáváme pole.
Kód:
#include
#include
using namespace std;
void display(string s(5))(
cout << s(2) ;
)
int main() (
string str(5) = ("Good", "Bad", "Positive", "Negative");
display(str);
)
Výstup :
Zde předáváme řetězec str. Str. Jako parametr funkci „display“, která vytiskne 3. prvek pole řetězců („pozitivní“).
5. Coping from String Array do jiného
Chcete-li kopírovat z řetězce String do jiného, měli bychom zkopírovat každý prvek jednotlivě, ale celou Array nelze kopírovat na jeden snímek.
Kód:
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;
)
)
Chybový výstup:
Výstup:
Když jsme se pokusili zkopírovat celé hlavní řetězcové pole (str) do jiného řetězce řetězců, došlo k chybě (jak je znázorněno na snímku obrazovky1), zatímco když jsme jej zkopírovali element po elementu, str byl zkopírován do s a mohli jsme to ověřit zobrazením druhého výstupního snímku obrazovky.
Závěr
Řetězec je tedy datový typ, který je maticí znaků a je přítomen pouze v C ++. V C jsme se deklarovali jako znakové pole. Pole řetězců je pole tvořené mnoha řetězci. Když je deklarována staticky nebo dynamicky, má pevnou velikost a když je deklarována ve formě vektoru, velikost není pevná. Ke každému prvku a znaku v určitém prvku lze snadno přistupovat pomocí indexování pole řetězců.
Doporučené články
Toto je průvodce String Array v C ++. Zde diskutujeme o tom, jak překonat prvek v String Array v C ++ a alokaci String Array v C ++. Další informace naleznete také v dalších souvisejících článcích.
- String Array v Pythonu
- StringBuffer v Javě
- Funkce řetězce Python
- Pole v C ++
- Úvod do řetězce řetězců v C #
- Prvních 11 funkcí a výhod C ++
- Top 8 Srovnání String vs StringBuilder
- Práce v Unixu se syntaxí?