📜  c++ 检查 const char* 是否有后缀 - C++ (1)

📅  最后修改于: 2023-12-03 14:59:49.196000             🧑  作者: Mango

C++ 检查 const char* 是否有后缀

在 C++ 中,有时需要检查字符串(以 const char* 表示)是否拥有特定的后缀。例如,我们需要检查一个字符串是否是以 ".txt" 结尾的。

下面是一些代码示例,用于演示如何检查 const char* 是否有后缀。

方法一:使用 C++ 标准库函数

C++ 标准库提供了一些函数,可以方便地检查字符串是否拥有特定的后缀。其中之一是 std::string 的 substr() 函数。

#include <string>

bool hasSuffix(const char* str, const char* suffix) {
    std::string s(str);
    std::string suf(suffix);
    if (s.length() >= suf.length()) {
        return (s.substr(s.length() - suf.length()) == suf);
    } else {
        return false;
    }
}

这里,我们将 const char* 转换为 std::string,然后使用 substr() 函数提取最后的若干个字符与目标后缀进行比较。

方法二:使用 C++11 的语言功能

C++11 中引入了一些新的字符串操作功能,其中包括 std::string 的 ends_with() 函数和 std::basic_string_view 的 ends_with() 函数。

#include <string_view>

bool hasSuffix(const char* str, const char* suffix) {
    std::string_view s(str);
    std::string_view suf(suffix);
    return s.ends_with(suf);
}

这里,我们使用 std::string_view 来表示字符串,然后使用 ends_with() 函数来检查字符串是否拥有目标后缀。

方法三:使用 C 语言函数

如果你不想使用 C++ 标准库,也可以使用 C 语言函数来检查字符串是否拥有目标后缀。

#include <string.h>

bool hasSuffix(const char* str, const char* suffix) {
    int str_len = strlen(str);
    int suf_len = strlen(suffix);
    if (suf_len > str_len) {
        return false;
    } else {
        return (strncmp(str + str_len - suf_len, suffix, suf_len) == 0);
    }
}

这里,我们使用了 strlen() 函数来获取字符串长度,然后使用 strncmp() 函数来比较字符串与目标后缀的最后若干个字符。

以上是一些常用的方法,可以帮助你检查 const char* 是否有特定的后缀。无论你选择哪个方法,都要根据实际情况选择最适合的方法。