, Обе функции все еще существуют из-за обратной совместимости.

C ++ 11 я подумалc_str() а такжеdata() эквивалентно.

C ++ 17 вводит перегрузку для последнего, которая возвращает непостоянный указатель (ссылка, который я не уверен, если он полностью обновлен w.r.t. С ++ 17):

const CharT* data() const;    (1)   
CharT* data();                (2)   (since C++17)

c_str() возвращает только постоянный указатель:

const CharT* c_str() const;

Почему дифференциация этих двух методов в C ++ 17, особенно когда C ++ 11 был тем, который сделал их однородными? Другими словами, почему только один метод получил перегрузку, а другой нет?

Ответы на вопрос(4)

Ваш ответ на вопрос