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