繁体   English   中英

如何将 double 变量转换为 char 数组?

[英]How to convert a double variable into a char array?

我正在为学校做一个项目,我们刚刚发现outtextxy() (我们必须使用来自 graphics.h 的 function)需要一个字符数组作为文本参数。 这是它的声明: void outtextxy (int x, int y, char *textstring)

问题是我们需要打印出一个type double的数字,包括小数点。 我之前曾尝试使用来自其他类似问题的知识使其发挥作用,但没有一个奏效。

这是我最近的尝试,导致了分段错误:

char *DoubleToString(long double x)
{
    char s[256]="\000";

    std::ostringstream strs;
    strs << x;
    string ss = strs.str();

    for(int i=0; i < ss.length(); i++)
        s[i] = ss[i];
    return s;
}

注意:我对编程还是有些陌生,我不完全知道ostringstream和类似位移的操作在做什么,但我尝试复制粘贴那部分,希望它能正常工作。

...需要一个字符数组作为文本参数。

好的,然后使用std::string

std::string DoubleToString(long double x)
{
    std::ostringstream strs;
    strs << x;
    return strs.str();
}

如果您需要底层字符数组,请使用字符串data()方法。 它确实返回指向字符串字符数组第一个元素的指针。 例如:

std::string s = DoubleToString(3.141);
function_that_needs_pointer_to_char( s.data() );

请注意,在 C++17 之前, data返回了一个const char* (自 C++11 以来,字符数组以 null 结尾,正如人们所期望的那样;)。

我知道这是未定义的行为,但它有效。 我只需要将返回的char*传递给outtextxy() ,而不是稍后对其进行操作,因为我将double变量存储在 object 中。

char *DoubleToString(long double x)
{
    char s[256]="\000";

    std::ostringstream strs;
    strs << x;

    string sd = strs.str();
    strcpy(s, sd.data());

    return s;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM