I am new to _bstr_t
's and still trying to get the hang of it. I was trying to check whether a particular string x
is contained anywhere within the bstring. Something I would normally do like;
String x = "hello";
S开发者_StackOverflowtring example = "You! hello there";
...
if (example.find(x) != string::npos) {
...
Just for the record the intended platform is windows.
There is no need to use _bstr_t
. Use the BSTR
type.
Next, read Eric's Complete Guide to BSTR Semantics.
Lastly, you can use the BSTR in native code the way you would a normal character array in most cases.
BSTR bstr = SysAllocString(L"FooBarBazQux");
if (wcsstr(bstr, L"Bar") != NULL) {
// Found it! Do something.
} else {
// Not there.
}
SysFreeString(bstr);
MSDN for wcsstr.
Your example appears to be trying to use string::find from STL. But you specify your variables of type "String" (capitalized). If you instead did:
using namespace std;
string x = "hello";
string example = "You! hello there";
...
your example would compile. Do you actually have a BSTR or _bstr_t that you need to work with that you haven't shown? Even if so, it's pretty easy to make an std::string from a _bstr_t, and after that you can use STL as you normally would.
精彩评论