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.







