- Строка, которую нужно манипулировать, а также строку поиска, не требует быть конкретного типа, такого как std :: string < /code>. Достаточно быть похожим на строку. < /Li>
Новый текстовый параметр, используемый для замены строки поиска, может быть значением или функцией, который будет вызван для предоставления значения < /li>
Новый текст оценивается только в том случае, когда он используется, когда он используется, помимо того, что он используется, помимо того, что он используется, по его словам, помимо того, что он используется, помимо того, что он используется, помимо того, что он используется, помимо того, что он используется, помимо того, что он используется, помимо того, что он используется, по его словам. манипулировать) Он должен быть только конвертируется в std :: string_view , совместимый с строкой, которая будет манипулировать. Это означает, что char*, std :: string_view , std :: string , char*(*) () и std :: function все в порядке.
Функция должна принимать все возможные виды типов текстов (
Код: Выделить всё
char*Код: Выделить всё
std::string< /li>
Новый (заменивший) струнный параметр должен оцениваться только один раз, даже если возникает несколько замен (по крайней мере, в случае, если параметр замены является functor). Оптимизирован также для случая, где замена не происходит. То есть он не должен создавать дорогие временные объекты (например, временный std :: string ), если они впоследствии не используются. (Причина: мой вариант использования состоит из очень большого количества вызовов для функции разыскиваемой замены, с лишь несколькими реальными замены.) < /P>
< /li>
Я хочу единую функцию в одном. Ревизии могут помочь другим. (Поэтому я не добавляю тег VS2022.) Но я перенес это на собственный ответ. Не желая принять свой собственный ответ в надежде, что кто -то может ответить с лучшей функцией.
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/797 ... ng-possibl