有没有像startsWith(str_a, str_b)
标准C库中的东西?
它应该指向两个以nullbytes结尾的字符串,并告诉我第一个字符串是否也完全出现在第二个字符串的开头。
例子:
"abc", "abcdef" -> true
"abcdef", "abc" -> false
"abd", "abdcef" -> true
"abc", "abc" -> true
发布于 2018-04-25 15:31:55
显然这没有标准的C函数。例子:
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
)。
发布于 2018-04-25 16:25:59
没有标准的功能,但你可以定义:
bool prefix(const char *pre, const char *str)
{
return strncmp(pre, str, strlen(pre)) == 0;
}
根据C标准(7.21.4.4/2),我们不必担心str
比pre
短。
https://stackoverflow.com/questions/-100004451
复制相似问题