Краткий ответ: это зависит.
Длинный ответ: std::string
очень полезен, поскольку предоставляет множество вспомогательных функций для строк (поиск подстрок, извлечение подстрок, объединение строк и т. Д.). Он также управляет памятью, поэтому владение строкой не может быть перепутано.
В вашем случае вам тоже не нужно. Вам просто нужно знать, соответствует ли какой-либо из объектов в m_tags
данной строке. Так что для вашего случая вполне достаточно написать функцию с использованием const char *s
.
Однако, как примечание: вы почти всегда хотите предпочитать std::string
над (const) char *
, когда говорите о возвращаемых значениях . Это связано с тем, что строки C не имеют никакой семантики владения, поэтому функция, возвращающая const char *
, должна быть очень тщательно задокументирована, объясняя, кому принадлежит указанная память (вызывающий или вызываемый) и, в случае, если вызываемый получает ее, как освободить это (delete[]
, delete
, free
, что-то еще).