I C++ är en sträng vanligtvis bara en array av (eller en referens/pekar på) tecken som slutar med NULL-tecknet ' ’. En sträng är en 1-dimensionell array av tecken och en array av strängar är en 2-dimensionell array av teckendär varje rad innehåller någon sträng.
Nedan är de 5 olika sätten att skapa en Array of Strings i C++:
- Använder sig av Pekare
- Använder sig av 2-D Array
- Använda Strängklass
- Använda Vektor klass
- Använda Array klass
1. Använda pekare
Pekare är den symboliska representationen av en adress. Med enkla ord är en pekare något som lagrar adressen till en variabel i den. I den här metoden skapas en array av strängliteraler av en array av pekare därvarje pekare pekar på en viss sträng.
Exempel:
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;> }> |
git push-kommando
>
>Produktion
Blue Red Orange Yellow>
Förklaring:
- Antalet strängar är fast, men behöver inte vara det. 4:an kan utelämnas, och kompilatorn kommer att beräkna rätt storlek.
- Dessa strängar är konstanter och deras innehåll kan inte ändras. Eftersom strängliteraler (bokstavligen de citerade strängarna) finns i ett skrivskyddat område av minnet, måste vi ange const här för att förhindra oönskade åtkomster som kan krascha programmet.
2. Använda en 2D-array
En 2D-matris är den enklaste formen av en flerdimensionell matris där den lagrar data i tabellform. Denna metod är användbar när längden på alla strängar är känd och ett speciellt minnesfotavtryck önskas. Utrymme för strängar kommer att tilldelas i ett enda block
Exempel:
C++
// 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;> }> |
>
>Produktion
för loop in bash
Blue Red Orange Yellow>
Förklaring:
- Både antalet strängar och storleken på strängarna är fasta. Återigen kan 4:an utelämnas, och lämplig storlek kommer att beräknas av kompilatorn. Den andra dimensionen måste dock ges (i detta fall 10), så att kompilatorn kan välja en lämplig minneslayout.
- Varje sträng kan modifieras men kommer att ta upp hela utrymmet som ges av den andra dimensionen. Var och en kommer att läggas ut bredvid varandra i minnet och kan inte ändra storlek.
- Ibland är kontroll över minnesfotavtrycket önskvärt, och detta kommer att allokera en minnesregion med en fast, regelbunden layout.
3. Använda klassen String
STL-strängen eller strängklass kan användas för att skapa en rad föränderliga strängar. I denna metod är storleken på strängen inte fixerad, och strängarna kan ändras vilket på något sätt gör den dynamisk till sin natur std::sträng kan användas för att skapa en strängarray med inbyggda funktioner.
Exempel:
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] <<>'
'>;> }> |
justera en bild i css
>
>Produktion
Blue Red Orange Yellow>
Förklaring:
Arrayen är av fast storlek, men behöver inte vara det. Återigen kan de fyra här utelämnas, och kompilatorn kommer att bestämma den lämpliga storleken på arrayen. Strängarna är också föränderliga, vilket gör att de kan ändras.
4. Använda vektorklassen
A vektor är en dynamisk array som fördubblar sin storlek när ett nytt tecken läggs till som överskrider dess gräns. STL-behållarvektorn kan användas för att dynamiskt allokera en array som kan variera i storlek.
Detta är endast användbart i C++, eftersom C inte har klasser. Observera att syntaxen för initieringslistan här kräver en kompilator som stöder 2011 C++-standarden, och även om det är ganska troligt att din kompilator gör det, är det något att vara medveten om.
Exempel:
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] << '
'; }> |
>
>Produktion
Blue Red Orange Yellow>
Förklaring:
callback helvete i javascript
- Vektorer är dynamiska arrayer och låter dig lägga till och ta bort objekt när som helst.
- Vilken typ eller klass som helst kan användas i vektorer, men en given vektor kan bara innehålla en typ.
5. Använda Array Class
En array är en homogen blandning av data som lagras kontinuerligt i minnesutrymmet. STL-behållarmatrisen kan användas för att allokera en matris med fast storlek. Det kan användas väldigt likt en vektor, men storleken är alltid fast.
Exempel:
C++
vad är autowired i java
// 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;> }> |
>
>Produktion
Blue Red Orange Yellow>
Detta är inte på något sätt de enda sätten att göra en samling strängar. C++ erbjuder flera containerklasser, som var och en har olika avvägningar och funktioner, och alla finns för att uppfylla krav som du kommer att ha i dina projekt. Utforska och ha kul!
Slutsats: Av alla metoder verkar Vector vara det bästa sättet att skapa en rad strängar i C++.
s.