Архив Тегов:std::string

Рассогласованный std::string

С классом std::string знакомы наверное все программисты C++. Но далеко не все знают, что он может находиться в рассогласованном состоянии. Под ним я понимаю такое состояние, при котором различные способы определения длины одной и той же строки (например, метод size и функция strlen) дают разный результат. Возникать оно может по разным причинам. Но, как правило, основная причина — NULL символ в неожиданном месте.

Сегодня я хотел бы обсудить именно такие «нездоровые» состояния std::string. Мы посмотрим, как они возникают, и попытаемся понять, почему они выглядят именно так.

Дополнительно мы обсудим один весьма спорный момент, связанный с методом std::string::reserve.

Продолжить чтение →