I C++ er en streng vanligvis bare en rekke (eller en referanse/peker til) tegn som slutter med NULL-tegnet ' '. En streng er en 1-dimensjonal rekke av tegn og en rekke av strenger er en 2-dimensjonal rekke av tegnhvor hver rad inneholder en eller annen streng.
Nedenfor er de 5 forskjellige måtene å lage en rekke strenger i C++:
- Ved hjelp av Pekere
- Ved hjelp av 2-D-array
- Bruker Strengeklasse
- Bruker Vektor klasse
- Bruker Array klasse
1. Bruke pekere
Pekere er den symbolske representasjonen av en adresse. Med enkle ord er en peker noe som lagrer adressen til en variabel i den. I denne metoden opprettes en rekke strengliteraler av en rekke pekere derhver peker peker på en bestemt streng.
Eksempel:
C++
// C++ program to demonstrate> // array of strings using> // pointers character array> #include> // Driver code> int> main()> {> >// Initialize array of pointer> >const> char>* colour[4]> >= {>'Blue'>,>'Red'>,>'Orange'>,>'Yellow'> };> >// Printing Strings stored in 2D array> >for> (>int> i = 0; i <4; i++)> >std::cout << colour[i] <<>'
'>;> >return> 0;> }> |
hvis annet i bash shell
>
>Produksjon
Blue Red Orange Yellow>
Forklaring:
- Antall strenger er fast, men trenger ikke være det. De 4 kan utelates, og kompilatoren vil beregne riktig størrelse.
- Disse strengene er konstanter og innholdet kan ikke endres. Fordi strengliteraler (bokstavelig talt, de siterte strengene) eksisterer i et skrivebeskyttet område av minnet, må vi spesifisere const her for å forhindre uønskede tilganger som kan krasje programmet.
2. Bruke en 2D-matrise
En 2D-matrise er den enkleste formen for en flerdimensjonal matrise der den lagrer dataene i tabellform. Denne metoden er nyttig når lengden på alle strenger er kjent og et bestemt minnefotavtrykk er ønsket. Plass for strenger vil bli tildelt i en enkelt blokk
Eksempel:
C++
serie i postgres
// C++ program to demonstrate> // array of strings using> // 2D character array> #include> // Driver code> int> main()> {> >// Initialize 2D array> >char> colour[4][10]> >= {>'Blue'>,>'Red'>,>'Orange'>,>'Yellow'> };> >// Printing Strings stored in 2D array> >for> (>int> i = 0; i <4; i++)> >std::cout << colour[i] <<>'
'>;> >return> 0;> }> |
>
>Produksjon
Blue Red Orange Yellow>
Forklaring:
- Både antall strenger og størrelsen på strengene er faste. 4, igjen, kan utelates, og passende størrelse vil bli beregnet av kompilatoren. Den andre dimensjonen må imidlertid gis (i dette tilfellet 10), slik at kompilatoren kan velge et passende minneoppsett.
- Hver streng kan endres, men vil ta opp hele plassen gitt av den andre dimensjonen. Hver vil bli lagt ut ved siden av hverandre i minnet, og kan ikke endre størrelse.
- Noen ganger er kontroll over minnefotavtrykket ønskelig, og dette vil tildele et minneområde med en fast, vanlig layout.
3. Bruke String-klassen
STL-strengen eller streng klasse kan brukes til å lage en rekke foranderlige strenger. I denne metoden er ikke størrelsen på strengen fast, og strengene kan endres, noe som på en eller annen måte gjør den dynamisk i naturen. std::streng kan brukes til å lage en strengmatrise ved hjelp av innebygde funksjoner.
Eksempel:
C++
// C++ program to demonstrate> // array of strings using> // string class> #include> #include> // Driver code> int> main()> {> >// Initialize String Array> >std::string colour[4]> >= {>'Blue'>,>'Red'>,>'Orange'>,>'Yellow'> };> >// Print Strings> >for> (>int> i = 0; i <4; i++)> >std::cout << colour[i] <<>'
'>;> }> |
>
>Produksjon
Blue Red Orange Yellow>
Forklaring:
liste over fonter i gimp
Matrisen er av fast størrelse, men trenger ikke være det. Igjen kan de 4 her utelates, og kompilatoren vil bestemme den passende størrelsen på matrisen. Strengene kan også endres, slik at de kan endres.
4. Bruke vektorklassen
EN vektor er en dynamisk matrise som dobler størrelsen hver gang et nytt tegn legges til som overskrider grensen. STL-beholdervektoren kan brukes til å dynamisk tildele en matrise som kan variere i størrelse.
Dette er kun brukbart i C++, da C ikke har klasser. Merk at syntaksen for initialiseringslisten her krever en kompilator som støtter 2011 C++-standarden, og selv om det er ganske sannsynlig at kompilatoren din gjør det, er det noe å være klar over.
Eksempel:
C++
// C++ program to demonstrate> // array of strings using> // vector class> #include> #include> #include> // Driver code> int> main()> {> >// Declaring Vector of String type> >// Values can be added here using> >// initializer-list> >// syntax> >std::vector colour{>'Blue'>,>'Red'>,> >'Orange'>};> >// Strings can be added at any time> >// with push_back> >colour.push_back(>'Yellow'>);> >// Print Strings stored in Vector> >for> (>int> i = 0; i std::cout << colour[i] << '
'; }> |
vikas diviakirti
>
>Produksjon
Blue Red Orange Yellow>
Forklaring:
- Vektorer er dynamiske matriser og lar deg legge til og fjerne elementer når som helst.
- Enhver type eller klasse kan brukes i vektorer, men en gitt vektor kan bare inneholde én type.
5. Bruke Array Class
En matrise er en homogen blanding av data som lagres kontinuerlig i minneplassen. STL-beholderarrayen kan brukes til å tildele en matrise med fast størrelse. Den kan brukes veldig likt en vektor, men størrelsen er alltid fast.
Eksempel:
C++
// C++ program to demonstrate> // array of string using STL array> #include> #include> #include> // Driver code> int> main()> {> >// Initialize array> >std::array colour{>'Blue'>,>'Red'>,> >'Orange'>,>'Yellow'>};> >// Printing Strings stored in array> >for> (>int> i = 0; i <4; i++)> >std::cout << colour[i] <<>'
'>;> >return> 0;> }> |
>
javac gjenkjennes ikke
>Produksjon
Blue Red Orange Yellow>
Dette er på ingen måte de eneste måtene å lage en samling av strenger på. C++ tilbyr flere containerklasser, som hver har ulike avveininger og funksjoner, og alle eksisterer for å oppfylle kravene du vil ha i prosjektene dine. Utforsk og ha det gøy!
Konklusjon: Av alle metodene ser Vector ut til å være den beste måten å lage en rekke strenger i C++.
s.