Funkcia assign
Chcete narýchlo pozmeniť alebo úplne zmeniť reťazec a nechcete deklarovať nový? S funkciou assign môžete nahradzovať reťazce podľa ľubovôle. Narozdiel od funkcie append, ktorá pridáva ďalšie znaky od posledneho zaplneného miesta v reťazci, funkcia assign pridáva od začiatku reťazca. Čiže ho nahradzuje!
1. príklad: Testujeme funkciu assign
#include <iostream> // hlavičkové súbory #include <string> using namespace std; // priestor mien int main() // hlavna funkcia main { string retazec; string retazec0 = "Ouha ze si sa uracil prist lenivec!"; retazec.assign(retazec0); // prvy sposob cout << retazec; string retazec1 = "Zajtra je den D, kedy zautocia mimozemstania!\n"; retazec1.assign("Zajtra je den D, kedy zautocia mimozemstania!Ale kecam hi hi :)\n"); // druhy sposob cout << retazec1; string retazec2 = "Dnes nas skoro dostalo tornado ty jo!\n"; string retazec3; retazec3.assign(retazec2, 22, 7); // treti sposob string retazec4; retazec4.assign("Milujem hru Cities Skylines, odporucam a moc!", 27); // stvrty sposob string retazec5; cout << "Nezabij" << retazec5.assign(5, 'a') << "j ma!\n"; // piaty sposob retazec0.assign("Svet este neskoncil a stale mame sancu ho vylepsit!\n"); // demonstracia, ze dojde k nahradeniu uz deklarovaneho a naplneneho retazca cout << retazec0; retazec4.assign(retazec4.begin()+12, retazec4.end()); // siesty sposob cout << retazec4; return 0; // koniec programu }
Výsledok programu:
Ouha ze si sa uracil prist lenivec!Zajtra je den D, kedy zautocia mimozemstania! Ale kecam hi hi :) Nezabijaaaaaj ma! Svet este neskoncil a stale mame sancu ho vylepsit! Cities Skylines
Rozbor programu:
Deklarácie funkcie assign sú podobné ako pri funkcii append a konštruktore string. Takže by malo byť jasné použitie argumentov v jednotlivých možností.
Funkcia copy
Funkcia copy nám umožňuje kopírovať sekvenciu znakov z reťazca do poľa. Samozrejme char poľa, čiže ide stále o reťazec známy v jazyku C. Nech sú už dôvody použitia akekoľvek, je fajn si túto funkciu predstaviť.
Deklarácia funkcie copy je nasledovná:
retazec.copy(pole, len, pos);
kde pole je to naše char pole, do ktorého skopírujeme sekvenciu znakov, len je počet kopírovaných znakov od nejakej počiatočnej pozície a pos je pozícia, od ktorej sa začnú kopírovať znaky. Funkcia copy vracia počet znakov skopírované do poľa. To znamená, že návratová hodnota funkcie copy je rovná argumentu len.
2. príklad: Testovanie funkcie copy
#include <iostream> // hlavičkové súbory #include <string> using namespace std; // priestor mien int main() // hlavna funkcia main { string retazec = "Zdravim ta pozemstan, cestujem z dalekej galaxie a vzdy som tuzil uz od prveho pohladu v nasom teleskope, navstivit Zem!"; char charPole[20]; size_t i = retazec.copy(charPole, 9, 11); charPole[i] = '\0'; cout << charPole << "\n"; string retazec1 = "Na odvratenu stranu Mesiaca my pozemstania nemame vizualny narok, nasimi ocami su technologicke zazraky iduce do vesmiru."; char charPole1[200]; retazec1.copy(charPole1, 121, 0); charPole1[121] = '\0'; cout << charPole1; return 0; }
Výsledok programu:
pozemstan Na odvratenu stranu Mesiaca my pozemstania nemame vizualny narok, nasimi ocami su technologicke zazraky iduce do vesmiru.