我在LPC 1769微处理器上编程,但我无法弄清楚如何将浮点数转换为字符串,以便我可以在我的显示器上打印它。我正在使用sprintf
命令,但我的程序仍显示内存错误。如何将float
转换为字符串?我需要在不使用标准库的情况下执行此操作。
答案 0 :(得分: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
之前,请验证您是否具有适当的内存分配和垃圾回收设置。如果没有,请使用 allocator 为从固定大小的内存池分配的字符串。搜索SO以查找“碎片化”。
答案 1 :(得分:3)
在C ++ 11中,您可以使用std::to_string将数值转换为std::string
,您可以使用c_str()
方法将其转换为C风格的字符串。
答案 2 :(得分: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;
}
test将包含来自val
的浮点数,如3.456。
您尝试做的是使用sprintf
,在这种情况下您可以执行此操作:
char buffer[40]
float val =3.456;
sprintf(buffer, "%f", val);
std::string out(buffer);
std::cout << out << std::endl;
希望有所帮助。