📅  最后修改于: 2023-12-03 14:59:49.196000             🧑  作者: Mango
在 C++ 中,有时需要检查字符串(以 const char* 表示)是否拥有特定的后缀。例如,我们需要检查一个字符串是否是以 ".txt" 结尾的。
下面是一些代码示例,用于演示如何检查 const char* 是否有后缀。
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 中引入了一些新的字符串操作功能,其中包括 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 语言函数来检查字符串是否拥有目标后缀。
#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* 是否有特定的后缀。无论你选择哪个方法,都要根据实际情况选择最适合的方法。