Автор: alsav22 (13.04.2012 в 15:25)
sizeof(d) не имеет отношения к размеру строки. Это размер объекта string в байтах, и он от размера строки не зависит. Сколько байтов, зависит от компилятора. Чтобы узнать: cout << sizeof(string). Потом, (char*)&d к строке не имеет отношения. Это адрес объекта string (а не строки), явно приведённый к указателю на char. У меня такой код в файл кракозябы пишет. Сам объект string не содержит строку. Он содержит ИНФОРМАЦИЮ о строке (в частности, её размер(колличество символов), получаемый методом d.size(); указатель на строку, получаемый методом d.c_str() ) и методы для работы со строками. Capacity = 15 выделяется под пустую строку. Если строка становится больше 15, то capacity автоматически увеличивается до 31 и т.д.