4

有人可以解释为什么我应该使用 strstr 或 string find() 吗?哪个更快,在哪里?

4

3 回答 3

17

在 C++ 中你应该使用 std::string::find(),在 C 中你应该使用 strstr()。性能上的差异不应该是显着的。

于 2012-08-03T16:52:28.757 回答
8

哪个更快并不重要。更重要的是 std::string::find 是安全的。因此,如果您要使用 c++,请使用 std::string 类并避免使用旧的 c 函数。

于 2012-08-03T16:54:55.620 回答
0

我已经对字符串中搜索子字符串的几个版本进行了基准测试。

带有 std=c++20/-O3 的 GCC 10.3 显示以下结果:

  • strstr 是最快的
  • std::string::find 慢约 3 倍
  • std::search 慢约 4.5 倍
  • std::string_view::find ~ 慢 11 倍

铿锵声12:

  • strstr 是最快的
  • std::string::find 慢约 3 倍
  • std::search 慢约 5.5 倍
  • std::string_view::find ~ 慢 8.5 倍

因此,如果您确实关心性能,请使用 strstr。

于 2022-01-19T10:17:47.437 回答