1

私は_bstr_t'sに不慣れで、まだコツをつかもうとしています。特定の文字列xがbstring内のどこかに含まれているかどうかを確認しようとしていました。私が普段やりたいこと。

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

念のため、対象となるプラットフォームはWindowsです。

4

2 に答える 2

4

を使用する必要はありません_bstr_t。タイプを使用しBSTRます。

次に、EricのBSTRセマンティクスの完全ガイドをお読みください。

最後に、ほとんどの場合、通常の文字配列と同じように、ネイティブコードでBSTRを使用できます。

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

wcsstrのMSDN

于 2011-10-06T16:01:33.823 に答える
1

あなたの例は、STLからstring::findを使用しようとしているようです。ただし、タイプ「文字列」(大文字)の変数を指定します。代わりに行った場合:

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

あなたの例はコンパイルされます。表示していないBSTRまたは_bstr_tを実際に使用する必要がありますか?そうだとしても、_bstr_tからstd :: stringを作成するのは非常に簡単で、その後は通常どおりにSTLを使用できます。

于 2011-10-08T21:10:49.507 に答える