В C++ и его стандартных библиотеках вы найдете множество "строкоподобных" типов, таких как std::string
, std::string_view
, std::wstring
, char *
, std::string_view
и так далее. Эта старая запись в блоге от 2008 года уже упоминала 30 типов (в контексте Windows legacy, но без std::vector<std::string_view>
, который является C++17). Я уверен, что с тех пор это число увеличилось в несколько раз.
Как это поможет нам решить вашу проблему? Ну, в ситуации с огромным количеством доступных типов строк, я думаю, что при проектировании функций общего назначения лучше всего сосредоточиться только на одном типе, до тех пор пока
Поэтому я бы рекомендовал начать с _sv
в качестве возвращаемого типа.
Это дает вызывающей стороне свободу в явном преобразовании к другому строкоподобному типу, или нет, или позволяет добавить дополнительную вспомогательную функцию (функции). Для них дополнительное дополнение, дополнительный суффикс типа _strview
или std::string
должен быть абсолютно приемлемым для имени дополнительных функций.
Конечно, когда выяснится, что в вашей системе конкретный вариант "split-stringview-with-conversion-to-string" нужен тысячу раз, а "split-stringview-without-conversion" нет нигде во всей кодовой базе, вы можете принять другое решение.
Прикрепляю к посту несколько видео по теме: