, Обе функции все еще существуют из-за обратной совместимости.
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 был тем, который сделал их однородными? Другими словами, почему только один метод получил перегрузку, а другой нет?