我想使用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如何工作?我想我可能在这里错过了一些东西。
答案 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) {
// ...
}