0

BSTR を float に変換しようとしています:

wcstod(data, NULL)

問題は、 data = 239.78 の場合、この関数が正常に機能することですが、この形式data = 239,78で受信します。

CComBSTR data = SysAllocString(L"239,78");
cout<<wcstod(data,NUll)<<endl;

このコードの出力は 239 です。

誰でも助けることができますか?ありがとうございました。

4

1 に答える 1

1

代わりにwcstod_lを使用し、必要なロケールを 3 番目の引数として渡す必要があります。これにより、「,」が正しく理解され、解析されます。このようなもの:

_locale_t fr = _create_locale(LC_ALL, "fr-FR"); // french locale
CComBSTR data = SysAllocString(L"239,78");
cout<<wcstod_l(data, NULL, fr)<<endl;
于 2013-05-10T19:39:03.710 に答える