Функция замены строки, которая заменяет все входы на новую строку, возможно, от фанктора, в качестве шаблона для всех стC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Функция замены строки, которая заменяет все входы на новую строку, возможно, от фанктора, в качестве шаблона для всех ст

Сообщение Anonymous »

Я ищу (своего рода универсальный швейцарский армейский нож), которая заменяет все входы поисковой строки в данном строковом объекте с помощью текста замены, возможно, овладности. есть: < /p>
  • Строка, которую нужно манипулировать, а также строку поиска, не требует быть конкретного типа, такого как std :: string < /code>. Достаточно быть похожим на строку. < /Li>
    Новый текстовый параметр, используемый для замены строки поиска, может быть значением или функцией, который будет вызван для предоставления значения < /li>
    Новый текст оценивается только в том случае, когда он используется, когда он используется, помимо того, что он используется, помимо того, что он используется, по его словам, помимо того, что он используется, помимо того, что он используется, помимо того, что он используется, помимо того, что он используется, помимо того, что он используется, помимо того, что он используется, по его словам. манипулировать) Он должен быть только конвертируется в std :: string_view , совместимый с строкой, которая будет манипулировать. Это означает, что char*, std :: string_view , std :: string , char*(*) () и std :: function все в порядке.
Вот требования, которые делают эту функцию очень универсальной и очень отличающейся от ответов. />
Функция должна принимать все возможные виды типов текстов (, std :: string_view , std :: string , char*(*) () , std :: function , ...) для нового текста (заменить). Все, что оценивается на что -то, что присваивается для std :: basic_string_view , также должно работать в качестве аргумента для нового текста замены. Особенно текст, поступающий из ленивого оцениваемого функционального. И можно использовать также в других классах, которые предоставляют необходимые функции в их интерфейсе.

Код: Выделить всё

std::string
Например). Таким образом, ему необходимо продлить срок службы этого временного (или копировать значение, но это кажется неэффективным и следует избегать) < /p>
< /li>
Новый (заменивший) струнный параметр должен оцениваться только один раз, даже если возникает несколько замен (по крайней мере, в случае, если параметр замены является functor). Оптимизирован также для случая, где замена не происходит. То есть он не должен создавать дорогие временные объекты (например, временный std :: string ), если они впоследствии не используются. (Причина: мой вариант использования состоит из очень большого количества вызовов для функции разыскиваемой замены, с лишь несколькими реальными замены.) < /P>
< /li>
Я хочу единую функцию в одном. Ревизии могут помочь другим. (Поэтому я не добавляю тег VS2022.) Но я перенес это на собственный ответ. Не желая принять свой собственный ответ в надежде, что кто -то может ответить с лучшей функцией.
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/797 ... ng-possibl
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»