c++ - 是否有 strstr() 的 constexpr 版本?

标签 c++ constexpr

据我了解,传统的字符数组功能,如 strlen , strstr等都是由 C 标准定义的,因为 constexpr是 C++11,它们没有用它声明。

然而,std::char_traits in C++17定义一些等效的函数,如 find (它本质上是 strchrcopy 的 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/

相关文章:

c++ - 如何将参数列表存储到 vector ?

c++ - 如何避免复制回调函数 (C++)

c++ - 为什么我在main函数和其他函数中看到数组大小的不同值

c++ - 如何让 C++ ADL 查看模板的所有实例?

c++ - 如何在 constexpr 函数中实现后备运行时实现

c++ - 如何决定 constexpr 是否返回引用

c++ - 内部 "Tee"设置

c++ - 将文件保存到用户在 C++ 中输入定义的位置和名称

c++ - 编写一个只接受文字 `0` 或文字 `1` 作为参数的函数

c++ - C++14 之前的模板元编程和条件运算符