функции-члены std :: string length () и size () - PullRequest
221 голосов
/ 25 мая 2009

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

Ответы [ 3 ]

294 голосов
/ 25 мая 2009

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

15 голосов
/ 25 мая 2009

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

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

0 голосов
/ 05 апреля 2017

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...