Преобразование bstr_t в двойной - PullRequest
1 голос
/ 15 июля 2011

Как сделать, чтобы преобразование bstr_t удваивалось в c ++?

Я думал преобразовать в * char, затем * char в double?

Ответы [ 3 ]

4 голосов
/ 15 июля 2011

Если у вас есть строка char* или wchar_t*, используйте функции strtod / wcstod, чтобы прочитать двойное число.

например. используя предложение @ Стива:

_bstr_t x;
double q = wcstod(x, NULL); // implicit conversion!
double p = strtod(x, NULL); // same

Очевидно, _bstr_t имеет операторы неявного преобразования как в const char *, так и const wchar_t*, так что вы можете использовать их непосредственно в функциях анализа с плавающей точкой.

2 голосов
/ 15 июля 2011

Вы можете привести к const char* (для этого есть конвертер , который обрабатывает отображение из широкого символа в MBCS под обложками), а затем преобразовать в удвоенное значение по вашему желанию - stringstream ::оператор >> например

1 голос
/ 15 июля 2011

Позвоните wcstod или _wcstod_l, если вы хотите контролировать локаль.

bstr_t myBstr_t = L"1.234";

double d = wcstod(myBstr_t, NULL);
...