如何将字符串从双精度转换为双精度*

安德鲁

我正在学习C ++,所以这可能是一个基本问题,但是,这是一个现实生活中的问题。我需要以最优雅/现代的方式(> C ++ 98)从字符串转换为双精度,然后再转换为双精度*。

该结构由基于C的框架提供(我在这里简化了代码,因为这仅是问题的症结),并且由于它与封闭源Metatrader4交易应用程序(非基于C)交互,因此我无法更改框架。编程接口要求将指针传递给结构。

正在从包含我从Metatrader4应用程序中获取的转储的csv文件中读取字符串。其细节超出了此问题。但是,输入仍然是字符串,因此是原始类型。

我很欣赏框架中使用的方法可能很老套,但这是生活的一部分。这并不意味着我不能渴望在代码中做得更好,因此我之所以要求优雅/现代的解决方案。如果它们不存在,那么我将被迫使用new,因为有人已经建议过。

我目前有以下无效代码:

#include <string>

struct bidAsk
{
    double *bid;
    double *ask;
};

int main()
{
    bidAsk ba;
    ba.bid = std::stod("1.100");
    ba.ask = &std::stod("1.102");
}

但是,上述两种转换方法均会因转换错误而失败。

第一行导致错误,该错误指出:

E0513   a value of type "double" cannot be assigned to an entity of type "double *"

第二行导致以下错误:

E0158   expression must be an lvalue or a function designator

我也尝试过static_cast,const_cast,make_unique和(double *)强制转换。

提前致谢。

加利克

问题是您需要一些实际值来指向指针他们不能仅仅指向从数字转换函数返回的临时值

struct bidAsk
{
    double* bid;
    double* ask;
};

int main()
{
    bidAsk ba;

    // these have to exist somewhere that lives as long as the
    // bidAsk object that points to them.
    double bid_value = std::stod("1.100");
    double ask_value = std::stod("1.102");

    ba.bid = &bid_value; // just pointing to the real values above
    ba.ask = &ask_value;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用jQuery或Javascript将货币字符串转换为双精度?

Java双精度转换为特定精度的字符串

Java:将双精度型转换为字符串

如何将18位数的双精度格式转换为10字符串字符

将字符串转换为双精度等于文字双精度吗?

迅速:将字符串转换为双精度的问题

如何将双精度值转换为字符串而不丢失c#中的数据

如何将特定格式的字符串转换为双精度

如何将字符串转换为双精度并保持字符串中表示的数字完全相同

iOS-将字符串转换为双精度

将字符串从Firebase转换为双精度值

如何将包含方程式的字符串转换为双精度值?

如何快速将字符串转换为双精度

将字符串转换为双精度-失去精度

C ++将字符串精确转换为双精度

C#如何将双精度数转换为带小数点和千位的字符串

将混合字符串转换为双精度

Javafx:如何将组合框字符串转换为双精度

如何在将双精度值转换为字符串后从双精度值中删除小数点

将字符串从语音转换为双精度

将字符串转换为if子句的双精度型

C#如何将双精度型转换为带指数符号的字符串

将字符串用'%'转换为双精度

无法将字符串转换为整数或双精度

将双精度列表转换为分组字符串

jsoncpp:将字符串转换为双精度

如何使用sql查询将字符串转换为整数或双精度数

如何将十六进制字符串转换为双精度字符串?

Flutter 无法将字符串转换为双精度

TOP 榜单

热门标签

归档