c++ - C++ 字符串使用 std lib 中的 find_first_of 函数检查子字符串
问题描述
我想使用find_first_of
C++ lib 中的函数来检查字符串是否包含某个子字符串,结果与我预期的不太一样。
我有如下代码
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预期的工作方式吗?我想我可能在这里遗漏了一些东西。
解决方案
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) {
// ...
}
推荐阅读
- javascript - JavaScript 中的 C# UnicodeCategory
- sql - 跨行选择具有多个条件的行
- c# - 在dragablz的所有其他选项卡中显示的另一个选项卡中具有相似长度的文本框的虚线:TabablzControl wpf mvvm
- angularjs - 登录 ionic 5 后更新侧边菜单
- javascript - graphqlHTTP 不是函数
- azure - Github 身份提供程序未出现在登录对话框中
- pandoc - 转换为 HTML 时为复选框编写 Ascii
- malware - 如何故意触发病毒扫描的误报?
- javascript - 我的浏览器不断抛出错误,提示“未捕获的 TypeError:n.charAt 不是函数”
- sql - 如何使用 sql server 查询获取这些数据?