gpt4 book ai didi

c++ - float 到 _bstr_t

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:06:00 25 4
gpt4 key购买 nike

我知道我可以通过以下方式创建一个带有 float 的 _bstr_t:

mValue = _bstr_t(flt); 

我可以通过首先声明一个 c 字符串来格式化浮点字符串:

char* str = new char[30];
sprintf(str, "%.7g", flt);
mValue = _bstr_t(str);

我对 C++ 有点生疏,尤其是涉及到 _bstr_t 时,它是 Visual Basic 字符串类型的 C++ 类包装器。str指向的内存会被_bstr_t对象管理吗?我的问题是将 float (flt) 传递给 _bstr_t 的构造函数会导致数字为 33.03434 的 float 变成“33,03434”,例如,如果我当前的语言集是意大利语。也许有另一种方式来声明它吗?

最佳答案

当您使用 char* 的转换创建一个 _bstr_t 实例时,会创建一个新的 BSTR,该对象不会取得 指向的内存的所有权字符*。您必须自己管理 char* 指向的内存。

在你的情况下,因为你知道生成字符串的长度是有限制的,你最好的选择是在堆栈上分配缓冲区:

const int bufferLength = 30;
char str[bufferLength] = {};
snprintf(str, bufferLength - 1, "%.7g", flt);
mValue = _bstr_t(str);

关于c++ - float 到 _bstr_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3286279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com