如何检查_bstr_t是否包含(类似于str.find)一个字符串

时间:2011-10-06 15:42:53

标签: 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。

2 个答案:

答案 0 :(得分:3)

无需使用_bstr_t。使用BSTR类型。

接下来,阅读Eric's Complete Guide to BSTR Semantics

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

BSTR bstr = SysAllocString(L"FooBarBazQux");
if (wcsstr(bstr, L"Bar") != NULL) {
  // Found it! Do something.
} else {
  // Not there.
}
SysFreeString(bstr);

MSDN for wcsstr

答案 1 :(得分:1)

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

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

你的例子会编译。你真的有一个你需要使用的BSTR或_bstr_t吗?即使这样,从_bstr_t创建一个std :: string也很容易,之后你可以像往常那样使用STL。