2014-09-11 49 views
-1
bool endsWith(const char* str, const char* suffix) 

測試C字符串str是否以指定的後綴C字符串後綴結束。測試C字符串是否以後綴結尾的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; 
} 
+0

'strstr'返回一個指針,而不是一個整數。 – 2014-09-11 01:37:33

+6

請不要用隱形墨水書寫你的問題。 – WhozCraig 2014-09-11 01:38:33

+0

你會考慮'std :: regex'或'std :: search'嗎? – 2014-09-11 01:39:09

回答

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; 
} 
+5

您將理想地通過'const'引用接受參數並使用['std :: string :: compare'](http:/ /en.cppreference.com/w/cpp/string/basic_string/compare)來避免臨時來自'substr'。 – 2014-09-11 02:04:28

1

另一種解決方案不使用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; 
} 
相關問題