Warto zauważyć, że forma append
tutaj;
string& append(size_type count, CharT ch);
Odzwierciedla konstruktora wykonującego similar input.
basic_string(size_type count,
CharT ch,
const Allocator& alloc = Allocator());
i kilka innych metod, które zajmują się count
o charakterze, takie jak resize(size_type count, CharT ch);
.
klasy String jest duża i jest możliwe, że dany przypadek użycia (i przeciążenie) dla str.append('b');
nie zostało uznane lub alternatywne zostały uznane za wystarczające.
Po prostu proste wprowadzenie pojedynczego przeciążenia do tego może wprowadzić niejednoznaczność, jeśli całki odpowiadają (na niektórych platformach może to mieć miejsce) int
i char
.
Istnieje kilka alternatyw dla append
dodawania pojedynczego znaku.
- Dodanie łańcucha zawierającego pojedynczy znak można wykonać
str.append("b");
. Chociaż to nie jest dokładnie to samo, ma ten sam efekt.
- Jak wspomniano istnieje
operator+=
- Istnieje również
push_back()
, co jest zgodne z innymi standardowymi kontenerami
Chodzi o to, że prawdopodobnie nigdy uważane za przypadek użycia (lub silnego przypadku wystarczy używać), a tym samym , odpowiednie przeciążenie/sygnatura nie została dodana do append
, aby to uwzględnić.
alternatywne projekty mogą być dyskutowane, ale biorąc pod uwagę dojrzałość standardu i tej klasy, jest mało prawdopodobne, zostaną one zmienione wkrótce - może to bardzo dobrze złamać dużo kodu. Można również rozważyć alternatywne podpisy dla append
; jednym z możliwych rozwiązań mogłoby być odwrócenie kolejności count
i char
(prawdopodobnie dodanie wartości domyślnej);
string& append(CharT ch, size_type count = 1);
Innym, jak opisano w niektórych critique of basic_string
jest usunięcie append
, istnieje wiele sposobów, aby osiągnąć to, co robi.
Technicznie nie jest tak, że jest słabszy, ale nikt nie pomyślał, że konieczne jest napisanie 'std :: string :: append (char)'. Użyj '+ =' jeśli chcesz to zrobić ... –
Powiązane: http://stackoverflow.com/questions/1472048/how-to-append-a-char-to-a-stdstring –
Możesz użyć 'std :: string :: append (count, char) 'z' count = 1' lub 'std :: string :: push_back (char)' –