условие if с переменной _bstr_t - PullRequest
0 голосов
/ 04 октября 2018

Мне нужно сравнить известное значение "string" с переменной "_bstr_t".Я преобразовал "_bstr_t" в "строку".но почему ниже не работает.спасибо

   _bstr_t bstr = L"My string"; 

   if (_bstr_t(bstr,false)=="My string")
   {
     int pp=0;
   }

1 Ответ

0 голосов
/ 06 октября 2018

Я пытался преобразовать "bstr" в тип "string" с помощью "_bstr_t (bstr, false)" *

Что _bstr_t(bstr,false) делает, чтобы создать вторую _bstr_t который указывает на то же BSTR, на которое указывает bstr.

, если я пишу "if (bstr ==" My string ")".есть ошибка…

Компилятору будет сложно понять, что означает == в этом случае, потому что левая сторона == - это _bstr_t, а праваясторона является const char [10]

Это может быть интерпретировано как встроенный оператор равенства указателей, который используется для сравнения двух указателей - чтобы увидеть, указывают ли они оба на одно и то же местоположение. Или это может означать оператор _bstr_t ==, который сравнивает два _bstr_t, чтобы увидеть, равны ли они лексикографически.

Мне нужно сравнить известное значение "string" с переменной "_bstr_t"

Поскольку вы хотите лексикографическое сравнение, вы, вероятно, хотите _bstr_t operator ==.Один из способов сделать это - создать _bstr_t из вашей строковой константы.

if (bstr == _bstr_t("My string"))
{
    int pp = 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...