是否有 strstr() 的 constexpr 版本?

Dan*_*ver 6 c++ constexpr

据我了解,传统的字符数组的功能,如strlenstrstr等全部由C-标准定义,因为constexpr是C ++ 11,他们没有将其声明。

然而,在C ++ 17的std :: char_traits定义像一些同等功能的发现(这基本上是一个constexpr C ++的版本strchr,或复制这似乎提供类似的东西strcpy

但是没有find找到子字符串的变体,只有一个字符。那么是否有一些 C++ constexpr 相当于strstr标准的一部分?

Hol*_*olt 5

如评论中所述,您可以使用std::string_view

#include <string_view>

constexpr std::string_view sv1 = "Hello World!";

static_assert(sv1.find("Hello") == 0);
static_assert(sv1.find("World") == 6);
static_assert(sv1.find("olleh") == std::string_view::npos);
Run Code Online (Sandbox Code Playgroud)

std::string_view构造函数都是constexpr,因此您可以从字符串文字构造一个,.find()方法也是constexpr.