Короче говоря, для не-const
std::string
доступ к элементу за пределами длины строки имеет неопределенное поведение (точнее, если для этого используется не-const
operator[]
).
C ++ 98 §21.3.4 / 1 , примерно std::string::operator[]
:
Если pos < size
, возвращает data()[pos]
.В противном случае, если pos == size()
, версия const
вернет charT()
.В противном случае поведение не определено.
И ваша строка не - const
.
Вы можете сделать это const
, что затем вызовет специальное положение в стандарте, котороегарантирует нулевой результат для элемента n , но это не решает проблему того, что ваша функция полностью избыточна для std::string
.
Возможно, вы хотите иметь тип аргумента char const*
.
Это имело бы больше смысла, и тогда также работала бы функция.
Приветствия & hth.,