如何检查 const char* 是否以特定字符串开头?(C++)

Ben*_*Ben 4 c++ string constants char

我有一个 const char* 变量,我想检查它是否以某个字符串开头。

例如:

string sentence = "Hello, world!";
string other = "Hello";
const char* c = sentence.c_str();

if(/*"c" begins with "other"*/)
{
    //Do something
}
Run Code Online (Sandbox Code Playgroud)

我如何使用 if 语句来做到这一点?

NPE*_*NPE 6

要检查 C 字符串是否以某个子字符串开头,可以使用strncmp().

对于 C++ 字符串,有一个std::string::compare()接受偏移量和长度的重载。


小智 5

您可以使用 c 函数strstr(string1, string2),该函数返回指向 string1 中第一次出现 string2 的指针。如果返回的指针指向 string1,则 string1 以您要匹配的内容开头。

const char* str1 = "Hello World";
const char* ptr = strstr(str1, "Hello");
// -----
if(str1 == ptr)
  puts("Found");
Run Code Online (Sandbox Code Playgroud)

请记住,您的其他变量将需要在 strstr 函数的上下文中使用它的 .c_str() 方法。