c++ - C++ 在 std:wstring 中找到 std:string
问题描述
std::string targetDevice = "c53b1f8";
std::wstring devname;
VARIANT var;
var.vt = VT_BSTR;
pPropertyBag->Read(L"DevicePath", &var, 0);
devname = var.bstrVal;
VariantClear(&var);
if (devname.find(targetDevice) != std::string::npos) //<< my problem
{
...
}
在 devname 中查找 targetDevice 的正确语法是什么?
解决方案
问题是不同的字符大小意味着不同的字符编码。更糟糕wchar_t
的大小取决于平台。
但假设您只对 ASCII 字符感兴趣并且大多数编码与 ASCII 兼容,您可以使用 STL 算法进行检查:
template <typename A, typename B>
bool contains(const A& a, const B& b)
{
return std::search(std::begin(a), std::end(a),
std::begin(b), std::end(b)) != std::end(a);
}
您应该编辑您的问题并提供更多上下文为什么您需要此功能,因为我怀疑有更好的方法来解决您的实际问题。
推荐阅读
- jersey - 在 Apache Karaf 中配置 Jersey 日志
- oracle - 在 IR 报告中创建超链接
- angular - Sourcetree 不忽略节点模块
- r - 试图在多个二进制矩阵列表中找到每个 3x3 瓦片中 1 的对角线数
- node.js - 如何以单一已知格式\结构发布不同格式的文件内容
- arrays - Powershell“无法索引到空数组”错误仅在函数内发生
- python - 如何创建日期范围作为列中的值的数据框?
- javascript - 带复选框的显示组件
- r - 渲染 RMarkdown 文档时修改全局环境
- c++ - 如何转换 boost::beast 的响应
回应 ?