C++ 如何检查a_bstr_t是否包含(类似于str.find)字符串

C++ 如何检查a_bstr_t是否包含(类似于str.find)字符串,c++,windows,string,visual-c++,bstr,C++,Windows,String,Visual C++,Bstr,我是新来的\bstr\t,仍在努力掌握诀窍。我试图检查某个特定字符串x是否包含在bstring中的任何位置。我通常喜欢的东西 String x = "hello"; String example = "You! hello there"; ... if (example.find(x) != string::npos) { ... 仅供记录,预期的平台是windows 无需使用\u bstr\t。使用BSTR类型 接下来,阅读 最后,您可以在本机代码中使用BSTR,就像在大多数情况下使用普通字

我是新来的
\bstr\t
,仍在努力掌握诀窍。我试图检查某个特定字符串
x
是否包含在bstring中的任何位置。我通常喜欢的东西

String x = "hello";
String example = "You! hello there";
...
if (example.find(x) != string::npos) {
...

仅供记录,预期的平台是windows

无需使用
\u bstr\t
。使用
BSTR
类型

接下来,阅读

最后,您可以在本机代码中使用BSTR,就像在大多数情况下使用普通字符数组一样


.

无需使用
\u bstr\u t
。使用
BSTR
类型

接下来,阅读

最后,您可以在本机代码中使用BSTR,就像在大多数情况下使用普通字符数组一样


.

您的示例似乎试图使用string::find from STL。但是您可以指定类型为“String”(大写)的变量。如果你改为:

using namespace std;
string x = "hello";
string example = "You! hello there";
...

你的例子可以编译。你是否真的有一个你需要处理的BSTR或是你没有展示的BSTR?即使如此,从一个std::string创建一个std::string还是很容易的,之后您可以像平常一样使用STL。

您的示例似乎在尝试使用string::find from STL。但是您可以指定类型为“String”(大写)的变量。如果你改为:

using namespace std;
string x = "hello";
string example = "You! hello there";
...

你的例子可以编译。你是否真的有一个你需要处理的BSTR或是你没有展示的BSTR?即使是这样,从一个_bstr_t生成一个std::string还是很容易的,之后你可以像平常一样使用STL。

谢谢你的帮助,但是编译器似乎不喜欢这样的东西,
错误C2665:'wcsstr':两个重载都不能转换所有的参数类型
<代码>常量wchar\u t*wcsstr(常量wchar\u t*,常量wchar\u t*)
wchar\u t*wcsstr(wchar\u t*,const wchar\u t*)
不看代码很难说。可能是
const
问题?你可以用你的新代码问一个新问题。如果你不同意第一条建议,
BSTR
会导致内存泄漏。等效代码:
\u bstr\u t bstr(L“FooBarBazQux”);if(wcsstr(bstr,L“Bar”)!=NULL){}else{}
。不需要SysFreeString。如果要进行此参数,请至少使用
CComBSTR
。感谢您的帮助,但是编译器似乎不喜欢某些东西,
错误C2665:“wcsstr”:两个重载都无法转换所有参数类型
<代码>常量wchar\u t*wcsstr(常量wchar\u t*,常量wchar\u t*)
wchar\u t*wcsstr(wchar\u t*,const wchar\u t*)
不看代码很难说。可能是
const
问题?你可以用你的新代码问一个新问题。如果你不同意第一条建议,
BSTR
会导致内存泄漏。等效代码:
\u bstr\u t bstr(L“FooBarBazQux”);if(wcsstr(bstr,L“Bar”)!=NULL){}else{}
。不需要SysFreeString。如果要进行此参数,至少使用
CComBSTR