Строку можно заменить на месте такой же длины
27.07.2026У типа строки появился метод копирования в неё значения той же длины. Это аналог уже существующего метода для срезов.
Почему это отдельная операция
Строка обязана быть корректным текстом в любой момент своего существования — иначе её нельзя ни напечатать, ни сравнить, ни положить в структуру с проверкой. Поэтому обычный обмен содержимым у строк невозможен по построению.
Обмен по месту возможен только при совпадении длин. И это гарантирует корректность: замена строки строкой той же длины не может разрезать многобайтовый символ, потому что границы символов в обеих строках совпадают по позициям.
Что проверяется
Длины обязаны совпадать, иначе прерывание. Совпадение проверяется явно, а не полагается на то, что срез получился корректной длины.
Полезность в коде, который работает с большими строками: перезапись на месте без выделения памяти.
Оригинал
implement str::copy_from_str
Упоминаний: 1 · Просмотров: 1