Przypisanie ciągu
Najłatwiejszym sposobem przypisania wartości do łańcucha jest użycie przeciążonej funkcji operator=. Istnieje również funkcja członkowska przypisania(), która powiela część tej funkcjonalności.
string& string::operator= (const string& str) string& string:: przypisania (const string& str) string& string::operator= (const char* str) string& string::przypisz (const char* str) string& string::operator= (char c)
- Te funkcje przypisują do łańcucha wartości różnych typów.
- Te funkcje zwracają *to, dzięki czemu można je „połączyć”.
- Pamiętaj, że nie ma funkcji przypisania(), która pobiera pojedynczy znak.
Przykładowy kod: std::string sString;
// Assign a string value
sString = std::string("One");
std::cout << sString << '\n';
const std::string sTwo("Two");
sString.assign(sTwo);
std::cout << sString << '\n';
// Assign a C-style string
sString = "Three";
std::cout << sString << '\n';
sString.assign("Four");
std::cout << sString << '\n';
// Assign a char
sString = '5';
std::cout << sString << '\n';
// Chain assignment
std::string sOther;
sString = sOther = "Six";
std::cout << sString << ' ' << sOther << '\n';
Wyjście: One
Two
Three
Four
5
Six Six
|
Funkcja członkowska przypisania() również występuje w kilku wersjach inne wersje:
string& string::przypis (const string& str, size_type indeks, size_type len)- Przypisuje podciąg str, zaczynając od indeksu i o długości len
- Zgłasza wyjątek out_of_range, jeśli indeks jest poza zakresem
- Zwraca *to, aby można było je „połączyć”.
Przykładowy kod: const std::string sSource("abcdefg");
std::string sDest;
sDest.assign(sSource, 2, 4); // assign a substring of source from index 2 of length 4
std::cout << sDest << '\n';
Wyjście: cdef
|
string& string::przypisz (const char* chars, size_type len)- Przypisuje len znaków z tablicy znaków w stylu C
- Zgłasza wyjąteklength_error, jeśli wynik przekracza maksymalną liczbę znaków
- Zwraca *to, aby można było je „połączyć”.
Przykładowy kod: std::string sDest;
sDest.assign("abcdefg", 4);
std::cout << sDest << '\n';
Wyjście: abcd
Ta funkcja jest potencjalnie niebezpieczna i jej użycie nie jest zalecane. |
string& string::przypisz (size_type len, char c)- Przypisuje len wystąpienia znaku c
- Zgłasza wyjątek long_error, jeśli wynik przekracza maksymalną liczbę znaków
- Zwraca *to, aby można było je „połączyć”.
Przykładowy kod: std::string sDest;
sDest.assign(4, 'g');
std::cout << sDest << '\n';
Wyjście: gggg
|
Zamiana
Jeśli masz dwa ciągi i chcesz zamienić ich wartości, możesz użyć dwóch funkcji o nazwie swap().
void string::swap (string& str) void swap (string& str1, string& str2)- Obie funkcje zamieniają wartość dwóch ciągów znaków. Funkcja składowa zamienia *this i str, funkcja globalna zamienia str1 i str2.
- Te funkcje są wydajne i należy ich używać zamiast przypisań, aby wykonać zamianę ciągów.
Przykładowy kod: std::string sStr1("red");
std::string sStr2("blue");
std::cout << sStr1 << ' ' << sStr2 << '\n';
swap(sStr1, sStr2);
std::cout << sStr1 << ' ' << sStr2 << '\n';
sStr1.swap(sStr2);
std::cout << sStr1 << ' ' << sStr2 << '\n';
Wyjście: red blue
blue red
red blue
|