C ++字符串使用std lib中的find_first_of函数检查子字符串

时间:2019-04-02 17:21:40

标签: c++ string substring

我想使用C ++库中的find_first_of函数来检查字符串是否包含某个子字符串,结果与我期望的不太一样。

我有如下代码

const std::wstring_view expected{ L"abc-1" };

const std::wstring_view result = GetResult(); // result = L"abc-2-1" from function return 

if (result.find_first_of(expected) == 0) {
    .....
}

当我调试此代码时,代码会进入if范围,这意味着它从位置“ 0”找到了匹配的子字符串。请问这是api如何工作?我想我可能在这里错过了一些东西。

1 个答案:

答案 0 :(得分:3)

std::basic_string_view::find_first_of返回字符串中任何字符首次出现的位置(如果找不到std::basic_string_view::npos)。

换句话说,它给出第一个'a''b''c''-''2''1'的位置。

使用std::basic_string_view::find获取第一个完整子字符串的位置。

if (result.find(expected) == 0) {
  // ...
}