一个C ++函数,用于测试C字符串是否以后缀结尾

时间:2014-09-11 01:35:26

标签: c++ string function

bool endsWith(const char* str, const char* suffix)

测试C字符串str是否以指定的后缀C字符串后缀结束。

示例:

endsWith("hot dog", "dog")        // Should return true
endsWith("hot dog", "cat")        // Should return false
endsWith("hot dog", "doggle")     // Should return false

我有:

bool endsWith(const char* str, const char* suffix){
if(strstr(str, suffix)==(strlen(str)-strlen(suffix)))
return true;
else
return false;
}

2 个答案:

答案 0 :(得分:2)

另一种不使用std::string的解决方案可能是:

bool strendswith(const char* str, const char* suffix)
{
    int len = strlen(str);
    int suffixlen = strlen(suffix);
    if(suffixlen > len)
    {
        return false;
    }

    str += (len - suffixlen);
    return strcmp(str, suffix) == 0;
}

答案 1 :(得分:0)

你没有真正提出问题,但你提到了一个C ++函数,所以:

bool endsWith(std::string str, std::string suffix)
{
  if (str.length() < suffix.length())
    return false;

  return str.substr(str.length() - suffix.length()) == suffix;
}