Les deux fonctions surchargées dans std :: string a attiré mon attention:string et char * et version string :: append(), string :: remplacer() et string :: comparer()
string& append(const string& str, size_t pos, size_t n);
string& append(const char* s, size_t n);
I suis curieux que la raison pour laquelle la version char * de chaîne :: append() ne fournit pas un paramètre supplémentaire size_t pos
, comme celui ci-dessous:
string& append(const char* s, size_t pos, size_t n);
Pour les deux autres fonctions, la situation est la même:
int compare(size_t pos1, size_t n1, const string& str, size_t pos2, size_t n2) const;
int compare(size_t pos1, size_t n1, const char* s, size_t n2) const;
string& replace(size_t pos1, size_t n1, const string& str, size_t pos2, size_t n2);
string& replace(size_t pos1, size_t n1, const char* s, size_t n2);
La version char * de ces fonctions n'a pas le paramètre size_t pos2
, qui n'est pas aussi flexible que leur contrepartie & de la chaîne. Ma question est la suivante:
- Pourquoi std :: string conçoit-il son interface de la sorte?
- Pourquoi la fonction char * version n'a-t-elle pas aussi
size_t pos
? - Quelle est la (les) considération (s) derrière cela?
Merci d'avoir lu!
+1 pour une réaction rapide;) – chill
En outre, 'str.append (ptr, pos, len)' est seulement un omble chevalier plus court que 'str.append (ptr + pos , len); '(et cela dépend de vos habitudes de blancs). – zneak