C++ c+中的浮点到字符串转换+;

C++ c+中的浮点到字符串转换+;,c++,microprocessors,C++,Microprocessors,我正在LPC1769微处理器上编程,但我不知道如何将浮点数转换成字符串,以便在显示器上打印出来。我正在使用sprintf命令,但我的程序仍然显示内存错误。如何将浮点数转换为字符串?我需要在不使用标准库的情况下执行此操作。此代码将为您执行此操作: #include <iostream> #include <sstream> #include <string> int main() { float val =3.456; std::strings

我正在LPC1769微处理器上编程,但我不知道如何将浮点数转换成字符串,以便在显示器上打印出来。我正在使用
sprintf
命令,但我的程序仍然显示内存错误。如何将
浮点数
转换为字符串?我需要在不使用标准库的情况下执行此操作。

此代码将为您执行此操作:

#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;
}
希望有帮助

这也会起作用:

#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);
#包括
#定义最大文本大小64U
浮动值=3.14159f;
字符文本数组[最大文本大小];
snprintf(文本数组,最大文本大小,“%4.2f”,值);
浮点值的字符串形式将在
text\u数组中


在内存受限的嵌入式系统上使用
std::string
之前,请验证您是否设置了适当的内存分配和垃圾恢复。如果没有,请使用分配器从固定大小的内存池中分配字符串。搜索“碎片”。

在C++11中,您可以使用它将数值转换为
std::string
,您可以使用
C_str()
方法将其转换为C样式字符串。

请提供一个将浮点转换为字符串的代码,您需要阅读以下内容:@JohnnyGraber?老实说,他可能没有尝试过任何东西,但他说的是sprint命令,也许他指的是sprintf,这意味着他正在尝试这样做:
sprintf(charstar,“%f”,floatvalue)
首先检查您的微处理器和编译器是否支持float。许多处理器没有。问题可能是sprintf实际上没有在显示器上显示任何内容。他可能需要弄清楚如何在显示设备上打印一些东西。首先,您能否成功地将更简单的东西打印到输出中?例如,一个文本字符串?如果是这样,那么请确保在构建配置中启用了对printf/sprintf的浮点支持(正如@naishsane所暗示的)。如果是这样的话,您可以sprintf一个不是由A->D驱动程序返回的FP值吗?你必须把这个问题分解才能有效地调试它。拜托,你似乎已经持续了足够长的时间来了解一个像样的答案。只有代码是不好的,请解释。。(是的,即使是这么短的。例如,为什么选择64作为数组大小?为什么使用
%4.2f
?)@stefan:OP没有对浮点格式给出任何要求,只是要求它输出。这是嵌入式系统中的标准方法,我已经编程40多年了。文本数组是64,因为这是2的一个很好的幂(为了对齐),而且OP没有给出字符串的长度。另外,我使用的是
snprintf
,因为它比
sprintf
更安全。你知道C代码也会在C++下编译吗?是什么让这个答案不好?@stefan:“%4.2f”是一个格式说明符,表示在一个4个字符宽(包括小数点)且精度为2位的字段中打印浮点值。课文应该是“3.14”。你不需要向我解释,我知道这些东西。这应该是答案的一部分。现在更好了,但是 %4.2F似乎仍然是一个奇怪的选择。请注意,混合C/IO和C++ I/O方法可能会有问题。参见<>代码> STD::IOS::宽度和 STD::IO::使用C++ I/O操作器格式化的精度< /COD>。@ ToMasMatthWS感谢您的建议,我认为我是单独提供C方法和C++方法,但您是正确的,我用C++方法输出到STD::CUT。实际上,我想要一个不包含任何标准LIB的代码。函数或任何其他库。包括
#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);