首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查看C++中的字符串是否以另一个字符串结尾

查看C++中的字符串是否以另一个字符串结尾
EN

Stack Overflow用户
提问于 2009-05-17 08:19:29
回答 21查看 228K关注 0票数 326

如何在C++中找出一个字符串是否以另一个字符串结尾?

EN

回答 21

Stack Overflow用户

发布于 2009-05-17 08:34:05

只需使用std::string::compare比较最后n个字符

代码语言:javascript
复制
#include <iostream>

bool hasEnding (std::string const &fullString, std::string const &ending) {
    if (fullString.length() >= ending.length()) {
        return (0 == fullString.compare (fullString.length() - ending.length(), ending.length(), ending));
    } else {
        return false;
    }
}

int main () {
    std::string test1 = "binary";
    std::string test2 = "unary";
    std::string test3 = "tertiary";
    std::string test4 = "ry";
    std::string ending = "nary";

    std::cout << hasEnding (test1, ending) << std::endl;
    std::cout << hasEnding (test2, ending) << std::endl;
    std::cout << hasEnding (test3, ending) << std::endl;
    std::cout << hasEnding (test4, ending) << std::endl;

    return 0;
}
票数 240
EN

Stack Overflow用户

发布于 2010-01-15 23:59:35

使用此函数:

代码语言:javascript
复制
inline bool ends_with(std::string const & value, std::string const & ending)
{
    if (ending.size() > value.size()) return false;
    return std::equal(ending.rbegin(), ending.rend(), value.rbegin());
}
票数 198
EN

Stack Overflow用户

发布于 2011-06-13 05:36:04

使用boost::algorithm::ends_with (例如参见http://www.boost.org/doc/libs/1_34_0/doc/html/boost/algorithm/ends_with.html ):

代码语言:javascript
复制
#include <boost/algorithm/string/predicate.hpp>

// works with const char* 
assert(boost::algorithm::ends_with("mystring", "ing"));

// also works with std::string
std::string haystack("mystring");
std::string needle("ing");
assert(boost::algorithm::ends_with(haystack, needle));

std::string haystack2("ng");
assert(! boost::algorithm::ends_with(haystack2, needle));
票数 167
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/874134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档