Функции std :: string length () и size ()

Я читал ответы на этот вопрос и обнаружил, что существует метод length() для std::string (я всегда использовал size() ). Есть ли какая-либо конкретная причина для этого метода в classе std::string ? Я читал как MSDN, так и CppRefernce, и они, похоже, указывают, что нет разницы между size() и length() . Если это так, разве это не делает более запутанным для пользователя этого classа?

Согласно документации , это всего лишь синонимы. size() должен быть совместим с другими контейнерами STL (например, с vector , map и т. д. ), а length() должен соответствовать интуитивному представлению о символьных строках большинства людей. Люди обычно говорят о слове, фразе или длине абзаца, а не о ее размере, поэтому length() позволяет сделать вещи более читаемыми.

Ruby – это то же самое, btw, предлагая как #length и #size как синонимы количества элементов в массивах и hashах (C ++ только делает это для строк).

Минималисты и люди, которые считают, что «должен быть один и, в идеале, только один, очевидный способ сделать это» (как читает Zen of Python), я думаю, в основном согласны с вашими сомнениями @Naveen, в то время как поклонники Perl’s ” Это более чем один способ сделать это »(или синтаксис SQL с дополнительными« шумными словами »bazillion, дающими несколько одинаково эквивалентных синтаксических форм для выражения одной концепции), несомненно, будут жаловаться на то, что Ruby, и особенно C ++, просто не заходят далеко достаточно, чтобы предлагать такую ​​синонимическую избыточность ;-).

длина строки == сколько битов, которые имеют строку, размер == размер этих битов, в строках оба одинаковы, если редактор выделяет размер символа 1 байт

  • Как я могу выполнять итерацию по кодовым точкам Unicode строки Java?
  • Преобразование wstring в строку, закодированную в UTF-8
  • string = string + int: Что за кулисами?
  • Преобразование std :: __ cxx11 :: string в std :: string
  • Копирование в буфер обмена в Java
  • Передайте C # строку в C ++ и передайте результат C ++ (string, char * .. whatever) в C #
  • Что такое хорошая 64-битная hash-функция в Java для текстовых строк?
  • Преобразование двоичной строки в целое число
  • Как преобразовать int в строку в C?
  • Java: как разбить строку на несколько символов?
  • Оценка математического выражения, заданного в виде строки
  • Interesting Posts

    Как обновить GUI с помощью фонового рабочего?

    System.Threading.Timer в C #, похоже, не работает. Он работает очень быстро каждые 3 секунды

    Планшет или телефон – Android

    Подключение DirectX EndScene из инъецированной DLL

    Предупреждение – сравнение между подписанными и беззнаковыми целыми выражениями

    c # – подход для сохранения пользовательских настроек в приложении WPF?

    Как передать ссылку на двумерный массив функции?

    Хороший, легкий графический монитор для Linux

    Как переименовать длинное имя файла (дубликат)

    Как получить IP-адрес LAN для переменной в пакетном файле Windows

    Как форматировать номер телефона в виде строки в Java?

    ld: библиотека не найдена для -lcrt0.o на OSX 10.6 с gcc / clang -статическим флагом

    как вычислять среднее / медианное значение для каждой группы в кадре данных в r

    Как удалить элемент из std :: vector по индексу?

    Могу ли я поделиться своим кабельным интернет-подключением через мой беспроводной маршрутизатор ADSL?

    Давайте будем гением компьютера.