Если я правильно понимаю, string::begin
возвращает указатель на первый элемент в строке.
Нет, он возвращает итератор на первый элемент в строке. Это помогает сделать std::string
совместимым с языковыми конструкциями (шаблонами), предназначенными для работы со стандартными контейнерами.
, почему бы нам просто не использовать &str
для получения указателя.
С одной стороны, это не адрес первого элемента строки? Предполагая, что str
является переменной типа std::string
, это будет адрес объекта, который, помимо прочего, (часто) содержит указатель на первый элемент строки. (Если вы имели в виду функцию-член c_str()
, то это можно сделать, но это не особо понятный и читаемый синтаксис.)