在c ++中浮点到字符串转换

时间:2012-11-05 06:27:06

标签: c++ microprocessors

我在LPC 1769微处理器上编程,但我无法弄清楚如何将浮点数转换为字符串,以便我可以在我的显示器上打印它。我正在使用sprintf命令,但我的程序仍显示内存错误。如何将float转换为字符串?我需要在不使用标准库的情况下执行此操作。

3 个答案:

答案 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;

希望有所帮助。