2012-11-05 72 views
-4

我編程上的LPC 1769微處理器,但我無法弄清楚如何將浮點數轉換爲字符串,這樣我可以打印在我的顯示。我正在使用sprintf命令,但我的程序仍顯示內存錯誤。如何將float轉換爲字符串?我需要在不使用標準庫的情況下執行此操作。浮到字符串轉換在C++

+0

什麼是「Sprint命令」? –

+0

*「請提供我,轉換成浮動一串代碼。」 *,你需要閱讀這一點:http://mattgemmell.com/2008/12/08/what-have-you-tried/ –

+1

@JohnnyGraber ?老實說,他可能處理不當嘗試新鮮事物,但他說的衝刺命令,也許他指的sprintf,這意味着他正在努力做到這一點:'sprintf的(charstar,「%F」的floatValue)' –

回答

2

該代碼會爲你做的:

#include <iostream> 
#include <sstream> 
#include <string> 

int main() 
{ 
    float val =3.456; 
    std::stringstream stream; 
    stream << val; 
    std::string test = stream.str(); 
    std::cout << test << std::endl; 
} 

測試將包含從val浮動爲3.456。

什麼它看起來像你要做的是使用sprintf,在這種情況下,你可以這樣做:

char buffer[40] 
float val =3.456; 

sprintf(buffer, "%f", val); 
std::string out(buffer); 
std::cout << out << std::endl; 

希望有所幫助。

+0

請注意混合C I/O和C++ I/O方法可能會有問題。請參閱'std :: ios :: width'和'std :: ios :: precision'來使用C++ I/O操縱器進行格式化。 –

+0

@ThomasMatthews謝謝你的建議,我想我是單獨提供一個C方法和C++的方法,但你是正確的,我輸出到std ::法院用C++方法。 –

3

這也將工作:

#include <stdio.h> 
#define MAXIMUM_TEXT_SIZE 64U 
float value = 3.14159f; 
char text_array[MAXIMUM_TEXT_SIZE]; 
snprintf(text_array, MAXIMUM_TEXT_SIZE, "%4.2f", value); 

浮點值的字符串形式將在text_array

與之前內存受限的嵌入式系統上使用std::string,請確認你有一個體面的內存分配和垃圾回收設置。如果不是,則使用分配器作爲從固定大小內存池分配的字符串。搜索所以「碎片」。

+0

請,你似乎已經足夠長時間知道關於一個體面的答案的事情。代碼僅是壞的,解釋。(是的,即使如此短的人爲什麼如你選擇64數組大小,爲什麼你使用'%4.2f'。?) – stefan

+0

@stefan:該任擇議定書沒有給出任何格式要求浮點,只是它被輸出。這是嵌入式系統中的一種標準方法,我已經編程了40多年。文本數組爲64,因爲這是一個很好的2(用於對齊目的),也因爲OP沒有給出字符串的長度。另外,我使用'snprintf',因爲它比'sprintf'安全。你知道C代碼也可以在C++下編譯嗎?是什麼讓這個不好的答案? –

+0

@stefan:「%4.2f」是一個*格式說明符*,表示在4個字符寬度(包括小數點)的字段中打印浮點數值,其中包含2位數字的精度。文本應該出來「3.14」。 –

3

在C++ 11中,您可以使用std::to_string將數值轉換爲std::string,您可以使用c_str()方法將其轉換爲C風格的字符串。

+0

實際上我想要一個不包含任何標準庫的代碼。函數或任何其他庫。包括 – user1799316