【问题标题】:fastest way to compare char* (C/C++)? [duplicate]比较 char* (C/C++) 的最快方法? [复制]
【发布时间】:2018-10-25 05:10:47
【问题描述】:

如果我有一个 char* 是另一个函数的输出,并且我知道它是 10 个已知单词之一,那么找到它的最佳方法是什么?

通过std::string(char*)char* 转换为string,然后使用string.compare()

char* c = "hi";
string s = std::string(c);
if (s.compare("hello") )

这是最好的方法吗?我不能直接写:

char* c ="hi";
if(c == "hello")

【问题讨论】:

  • c 或 c++,请选择一个。 c 没有std::string 而在c++ 中,你为什么首先使用char*? (应该是const char* btw)
  • std::string 已定义 operator==
  • 顺便说一句,要比较两个char*,因为标题要求您实际上确实使用==,但您不想比较char*s,您想比较两个@987654337指向的字符串@
  • 我认为人们不会阅读有关某种特定语言的任何内容,而是会跑到 SO 并期望在 2 分钟内了解该特定语言的基础知识。正确的答案应该是“阅读一些关于 C 或 C++ 的书”。
  • 问题因重复而关闭,但时间在流逝,还有另一种选择:从 C++17 开始,您可以使用 std::string_view 在 C 字符串 (char*) 上构造“视图”和 C++ std::string 然后你可以调用 std::string_view.compare 方法。简单而且相当快。

标签: c++ c char compare


【解决方案1】:

由于您已经有一个 C 字符串,因此只需使用 strcmp。它可能比s.compare 方法更快,因为您避免了将原始字符串和要比较的字符串转换为std::string 的开销。

if (strcmp(c, "hello") == 0) {
    ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-18
    • 2019-03-06
    • 2020-04-14
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多