Две перегруженные функции в std :: string привлекли мое внимание:
string& append(const string& str, size_t pos, size_t n);
string& append(const char* s, size_t n);
Мне любопытно, почему версия string :: append () в char * не предоставляет дополнительного параметра size_t pos
, как показано ниже:
string& append(const char* s, size_t pos, size_t n);
Для двух других функций ситуация также одинакова:
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);
В версии этих функций типа char * отсутствует параметр size_t pos2
, который не так гибок, как их строка и аналог.У меня следующий вопрос:
- Почему std :: string разрабатывает свой интерфейс следующим образом?
- Почему функция char * version также не имеет
size_t pos
? - Какие соображения стоят за этим?
Спасибо за чтение!