Member
Статус: Не в сети Регистрация: 06.02.2006 Откуда: Одесса
вот что мы имеем
Код:
AnsiString ProcessString(AnsiString const& str) { if(str == EmptyStr) return EmptyStr; //string isn't empty so we can process it auto_ptr <char> buf(str.c_str());
Я не работал с билдером и класс AnsiString не знаю, но:
1. Во-первых, на кой чёрт здесь нужен auto_ptr? Совершенно не к месту. (Решение --> обычный указатель)
2. Ты меняешь const-строку str по полученному указателю. (Решение --> сначала скопировать, потом менять)
3. Могут ли в строке встречаться 0? Если нет (да и если могут тоже), лучше использовать идиому итератора.
Member
Статус: Не в сети Регистрация: 14.01.2004 Откуда: Киев, Украина
Sergey_H тут вообще-то undefined behavior, как раз с auto_ptr. По-стандарту у него в деструкторе delete, не delete[].
Да и как было сказано, не хорошо это, модифицировать const char *, которую возвращает c_str.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения