簡體   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