logo

Joustomerkkijono C++:ssa – 5 eri tapaa luoda

C++:ssa merkkijono on yleensä vain merkkijono (tai viittaus/osoittaa niihin), joka päättyy NULL-merkkiin. ‘. Merkkijono on yksiulotteinen merkkijono ja merkkijono on 2-ulotteinen merkkijonojossa jokainen rivi sisältää jonkin merkkijonon.

Alla on 5 eri tapaa luoda merkkijonotaulukko C++:ssa:



  1. Käyttämällä Osoittimet
  2. Käyttämällä 2-D-taulukko
  3. Käyttämällä String Class
  4. Käyttämällä Vektoriluokka
  5. Käyttämällä Array Class

1. Osoittimien käyttäminen

Osoittimet ovat osoitteen symbolinen esitys. Yksinkertaisesti sanottuna osoitin on jotain, joka tallentaa siihen muuttujan osoitteen. Tässä menetelmässä merkkijonoliteraalien joukko luodaan osoittimien joukolla, jossajokainen osoitin osoittaa tiettyyn merkkijonoon.

Esimerkki:

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;> }>

kartta koneella

>

>

Lähtö

Blue Red Orange Yellow>

Selitys:

  • Merkkijonojen määrä on kiinteä, mutta sen ei tarvitse olla. 4 voidaan jättää pois, ja kääntäjä laskee oikean koon.
  • Nämä merkkijonot ovat vakioita, eikä niiden sisältöä voi muuttaa. Koska merkkijonoliteraalit (kirjaimellisesti lainatut merkkijonot) ovat vain luku -alueella, meidän on määritettävä tässä const, jotta estetään ei-toivotut käyttöt, jotka voivat kaataa ohjelman.

2. 2D-taulukon käyttäminen

2-D-taulukko on moniulotteisen taulukon yksinkertaisin muoto, jossa se tallentaa tiedot taulukkomuodossa. Tämä menetelmä on hyödyllinen, kun kaikkien merkkijonojen pituus tunnetaan ja tietty muistitila halutaan. Tila merkkijonoille varataan yhdessä lohkossa

Esimerkki:

C++


javan nimeämiskäytäntö



// 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;> }>

>

>

Lähtö

Blue Red Orange Yellow>

Selitys:

  • Sekä merkkijonojen lukumäärä että merkkijonojen koko ovat kiinteät. 4 voidaan jälleen jättää pois, ja kääntäjä laskee sopivan koon. Toinen ulottuvuus on kuitenkin annettava (tässä tapauksessa 10), jotta kääntäjä voi valita sopivan muistiasettelun.
  • Jokaista merkkijonoa voidaan muokata, mutta se vie koko toisen ulottuvuuden antaman tilan. Jokainen asetetaan vierekkäin muistissa, eivätkä ne voi muuttaa kokoa.
  • Joskus muistin jalanjäljen hallinta on toivottavaa, ja tämä varaa muistialueen kiinteällä, säännöllisellä asettelulla.

3. String-luokan käyttäminen

STL-merkkijono tai jousiluokka voidaan käyttää luomaan joukko muuttuvia merkkijonoja. Tässä menetelmässä merkkijonon koko ei ole kiinteä, ja merkkijonoja voidaan muuttaa, mikä tekee siitä kuitenkin jotenkin luonteeltaan dynaamisen std::string voidaan käyttää merkkijonotaulukon luomiseen sisäänrakennettujen funktioiden avulla.

Esimerkki:

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] <<>' '>;> }>

>

>

Lähtö

Blue Red Orange Yellow>

Selitys:

Taulukko on kiinteän kokoinen, mutta sen ei tarvitse olla. Jälleen 4 tässä voidaan jättää pois, ja kääntäjä määrittää sopivan taulukon koon. Merkkijonot ovat myös muuttuvia, joten niitä voidaan muuttaa.

asetusvalikko android

4. Vektoriluokan käyttö

A vektori on dynaaminen matriisi, joka kaksinkertaistaa kokonsa aina, kun uusi merkki lisätään, joka ylittää sen rajan. STL-konttivektoria voidaan käyttää dynaamisesti allokoimaan taulukko, jonka koko voi vaihdella.

Tämä on käytettävissä vain C++:ssa, koska C:llä ei ole luokkia. Huomaa, että alustusluettelon syntaksi tässä vaatii kääntäjän, joka tukee 2011 C++ -standardia, ja vaikka on melko todennäköistä, että kääntäjäsi tukee, se on syytä olla tietoinen.

Esimerkki:

javascript if -lause

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] << ' '; }>

>

>

Lähtö

Blue Red Orange Yellow>

Selitys:

  • Vektorit ovat dynaamisia taulukoita, joiden avulla voit lisätä ja poistaa kohteita milloin tahansa.
  • Mitä tahansa tyyppiä tai luokkaa voidaan käyttää vektoreissa, mutta tietty vektori voi sisältää vain yhden tyypin.

5. Array-luokan käyttäminen

Taulukko on homogeeninen sekoitus dataa, joka tallennetaan jatkuvasti muistitilaan. STL-konttitaulukkoa voidaan käyttää kiinteän kokoisen taulukon varaamiseen. Sitä voidaan käyttää hyvin samalla tavalla kuin vektoria, mutta koko on aina kiinteä.

Esimerkki:

C++

rdbms




// 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;> }>

>

>

Lähtö

Blue Red Orange Yellow>

Nämä eivät suinkaan ole ainoita tapoja tehdä merkkijonoja. C++ tarjoaa useita konttiluokkia, joista jokaisessa on erilaisia ​​kompromisseja ja ominaisuuksia, ja ne kaikki ovat olemassa täyttämään vaatimukset, joita sinulla on projekteissasi. Tutustu ja pidä hauskaa!

Johtopäätös: Kaikista menetelmistä Vector näyttää olevan paras tapa luoda merkkijonosarja C++:ssa.

s.