[英]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.