На этом шаге мы рассмотрим методы, используемые для построения C-строк и символьных массивов.
Для построения указанных конструкций используются следующие методы:
const char* string::c_str () const
Возвращаемый массив принадлежит строке, поэтому вызывающая сторона не должна ни модифицировать, ни удалять возвращаемое значение.
Возвращаемое значение действительно только на время существования строки и пока для нее вызываются только константные функции.
const char* string::data () const
Возвращаемое значение содержит все символы строки без каких-либо модификаций или дополнений. В частности, символ \0 не включается в массив. Это означает, что в общем случае возвращаемое значение не является действительной С-строкой.
Возвращаемый массив принадлежит строке, поэтому вызывающая сторона не должна ни модифицировать, ни удалять возвращаемое значение.
Возвращаемое значение действительно только на время существования строки и пока для нее вызываются только константные функции.
size_type string::copy (char* buf, size_type buf_size) const size_type string::xopy (char* buf, size_type buf_size, size_type idx) const
Обе формы возвращают количество скопированных символов.
Символ \0 к строке не присоединяется. После вызова содержимое buf может не быть действительной С-строкой.
Перед вызовом необходимо проследить за том, чтобы массив buf имел достаточный размер; в противном случае вызов приводит к непредсказуемым последствиям.
Если выполняется условие idx>size(), генерируется исключение out_of_range.
Со следующего шага мы начнем знакомиться с модифицирующими операциями.