据我了解,传统的字符数组功能,如 strlen
, strstr
等都是由 C 标准定义的,因为 constexpr
是 C++11,它们没有用它声明。
然而,std::char_traits in C++17定义一些等效的函数,如 find (它本质上是 strchr
或 copy 的 constexpr C++ 版本,它似乎提供了类似于 strcpy
的东西。
但是没有 find
的变体找到一个子字符串,只有一个字符。那么是否有一些 C++ constexpr 等效于 strstr
任何地方的标准的一部分?
最佳答案
如评论中所述,您可以使用 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);
std::string_view
构造函数都是constexpr
,因此您可以从字符串文字构造一个,而 .find()
方法也是constexpr
.
关于c++ - 是否有 strstr() 的 constexpr 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59193338/