std::string as std::vector?
От: Mr. None Россия http://mrnone.blogspot.com
Дата: 29.03.05 03:03
Оценка: -1
#Имя: FAQ.stl.stringinside
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:


А>>Гарантируется ли стандартом размещение элементов строки в непрерывном блоке памяти, как это сделано для вектора? И имеет ли строка нуль терминатор равный *(string.end()). Спасибо

А>Гарантируется если вызовешь c_str(), а в целом в большинстве реализаций STL не прерывный блок.

Неверно. c_str() возвращает строку вида const char* заканчивающуюся 0, но никто не гарантирует, что эта строка будет ссылаться на корректное внутреннее представление. Иными словами c_str() может вернуть указатель на временный кеш, в котором будет собираться строка, а внутри она может храниться как угодно и если вы преобразуете значение, возвращаемое c_str() в char* и попытаетесь его изменить — это ни к чему не приведёт в лучшем случае, в худшем всё может упасть...
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.