c++ 检查一个字符串是否是另一个字符串的前缀

我有两个字符串,我想比较:String和String:。是否有一个库函数,当传递这两个字符串时会返回true(对于String和OtherString而言为false)?

确切地说,我想知道一个字符串是否是另一个字符串的前缀。

最佳答案
使用std::mismatch.将较短的字符串作为第一个迭代器范围传递,并且作为第二个迭代器范围更长。返回是一对迭代器,第一个是第一个范围的迭代器,第二个是第二个范围的迭代器。如果第一个是第一个范围的结尾,那么你知道短串是较长的字符串的前缀,例如

std::string foo("foo");
std::string foobar("foobar");

auto res = std::mismatch(foo.begin(), foo.end(), foobar.begin());

if (res.first == foo.end())
{
  // foo is a prefix of foobar.
}

转载注明原文:c++ 检查一个字符串是否是另一个字符串的前缀 - 代码日志