|
Программирование >> Операторы преобразования типа
В стандарте поведение этой формы функции compare() определяется иначе: в нем сказано, что cstr интерпретируется не как С-строка, а как символьный массив, в качестве длины которого передается значение npos (для чего вызывается следующая форма функции сотрагеО с передачей npos в дополнительном параметре). Это ошибка в стандарте, поскольку такой вызов всегда порождал бы исключение length error. int string: .compare (const char* cstr) const О Сравнивает символы *this с символами С-строки cstr. О Сравнение выполняется так же, как в приведенном выше описании compaгeC5t). int strmg: ;compare (size type idx, size type len, const char* cstr) const О Сравнивает не более len символов строки *this, начиная с индекса idx, со всеми символами С-строки cstr. О Сравнение выполняется так же, как в приведенном выше описании compare(5t). int string::compare (size type idx, size type len. const char* chars. size type charsjen) const О Сравнивает не более len символов строки *this, начиная с индекса idx, с charsjen символами символьного массива chars. О Сравнение выполняется так же, как в приведенном вьппе описании compare(.sfr). О Символьный массив chars должен содержать не менее charsjen символов, которые могут иметь произвольные значения (символ \0 не имеет особой интерпретации). О Если аргумент charsjen равен stn>3g::npos, генерируется исключение length error. Обращение к символам chare stry/?g: :operator[l (slze type idx) char stryng;:operator[] (size type idx) const О Обе формы возвращают символ с индексом idx (первому символу соответствует индекс 0). О Для константных строк значение length() является действительным индексом; при обращении по нему оператор возвращает значение, сгенерированное конструктором по умолчанию для типа символов (\0 для типа string). О Для неконстантных строк значение length() не является действительным индексом. О Передача недействительного индекса приводит к непредсказуемым последствиям. О Ссылки, возвращаемые для неконстантных строк, motjt стать недействительными из-за модификаций строки или перераспределения памяти (за подробностями обращайтесь к с. 471). О Если вызывающая сторона не может проверить действительность индекса, следует использовать функцию at(). chare stringr.dt (s1ze type idx) const chare string::at (size type idx) const О Обе формы возвращают символ с индексом idx (первому символу соответствует индекс 0). О Для всех строк значение length() не является действительным индексом. О При использовании недействительного индекса (отрицательного, а также больщего либо равного size()) генерируется исключение out of range. О Ссылки, возвращаемые для неконстантных строк, могут стать недействительными из-за модификаций строки или перераспределения памяти (за подробностями обращайтесь к с. 471). О Если при вызове вы уверены в действительности индекса, можно воспользоваться оператором [], который работает быстрее. Построение С-строк и символьных массивов const char* string: :c str О const О Возвращает содержимое строки в виде С-строки (массив символов с присоединенным символом \0). О Возвращаемый массив принадлежит строке, поэтому вызывающая сторона не должна ни модифицировать, ни удалять возвращаемое значение. О Возвращаемое значение действительно только на время существования строки и пока для нее вызываются только константные функции. const char* string::6aia О const О Возвращает содержимое строки в виде символьного массива. О Возвращаемое значение содержит все символы строки без каких-либо модификаций или дополнений. В частности, символ \0 не включается в массив. Это означает, что в общем случае возвращаемое значение не является действительной С-строкой. О Возвращаемый массив принадлежит строке, поэтому вызывающая сторона не должна ни модифицировать, ни удалять возвращаемое значение. О Возвращаемое значение действительно только на время существования строки и пока для нее вызываются только константные функции. slze type stry/?g: :сору (char* buf. size type buf size) const size type string::copy (char* buf. size type buf size. size type idx) const О Обе формы копируют не более buf size символов строки (начиная с индекса idx) в символьный массив buf. О Обе формы возвращают количество скопированных символов, О Символ \0 к строке не присоединяется. После вызова содержимое buf может не быть действительной С-строкой. О Перед вызовом необходимо проследить за том, чтобы массив buf имел достаточный размер; в противном случае вызов приводит к непредсказуемым последствиям. О Если выполняется условие idx>\ze{), генерируется исключение out of range. Модифицирующие операции Присваивание string string;\орегд1ог= (const string str) string string:-.dss-ign (const string, str) О Обе функции присваивают значение строки str. О Обе функции возвращают *this. string string::assign (const string str. slze type strjdx, s1ze type strjium) О Присваивает не более str num символов строки str, начиная с индекса strjdx. О Возвращает *this. О Если выполняется условие strjdx>str.s\ze{), генерируется исключение out of range. string stry/?g; :operator= (const char* cstr) string string;:assign (const char* cstr) О Обе функции присваивают символы, входящие в С-строку cstr, О Присваиваются все символы cstr, кроме \0. О Обе функции возвращают *this. О Аргумент cstr не должен содержать NULL-указатель. О Если размер полученной строки превышает максимально допустимое количество символов, обе функции генерируют исключение length error. string, string: :assign (const char* chars. size type charsjen) О Присваивает charsjen символов из символьного массива chars. О Возвращает *this. О Символьный массив chars должен содержать не менее charsjen символов, которые могут иметь произвольные значения (символ \0 не имеет особой интерпретации). О Если размер полученной строки превышает максимально допустимое количество символов, генерируется исключение length error. string string::operator= [char с) О Присваивает символ с как новое значение строки. О Возвращает *this. О После вызова *this содержит только один символ.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |