首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查一个字符串是否以C中的另一个字符串开头?

如何检查一个字符串是否以C中的另一个字符串开头?
EN

Stack Overflow用户
提问于 2018-04-25 06:33:43
回答 2查看 0关注 0票数 0

有没有像startsWith(str_a, str_b)标准C库中的东西?

它应该指向两个以nullbytes结尾的字符串,并告诉我第一个字符串是否也完全出现在第二个字符串的开头。

例子:

代码语言:javascript
运行
复制
"abc", "abcdef" -> true
"abcdef", "abc" -> false
"abd", "abdcef" -> true
"abc", "abc"    -> true
EN

回答 2

Stack Overflow用户

发布于 2018-04-25 15:31:55

显然这没有标准的C函数。例子:

代码语言:javascript
运行
复制
bool startsWith(const char *pre, const char *str)
{
    size_t lenpre = strlen(pre),
           lenstr = strlen(str);
    return lenstr < lenpre ? false : strncmp(pre, str, lenpre) == 0;
}

请注意,上面的内容非常好,很清晰,但如果你是在一个紧密的循环中进行操作或使用非常大的字符串,它可能无法提供最佳性能,因为它会扫描两个字符串的全部长度(前strlen)。

票数 0
EN

Stack Overflow用户

发布于 2018-04-25 16:25:59

没有标准的功能,但你可以定义:

代码语言:javascript
运行
复制
bool prefix(const char *pre, const char *str)
{
    return strncmp(pre, str, strlen(pre)) == 0;
}

根据C标准(7.21.4.4/2),我们不必担心strpre短。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100004451

复制
相关文章

相似问题

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