C++ c+中的浮点到字符串转换+;
我正在LPC1769微处理器上编程,但我不知道如何将浮点数转换成字符串,以便在显示器上打印出来。我正在使用C++ c+中的浮点到字符串转换+;,c++,microprocessors,C++,Microprocessors,我正在LPC1769微处理器上编程,但我不知道如何将浮点数转换成字符串,以便在显示器上打印出来。我正在使用sprintf命令,但我的程序仍然显示内存错误。如何将浮点数转换为字符串?我需要在不使用标准库的情况下执行此操作。此代码将为您执行此操作: #include <iostream> #include <sstream> #include <string> int main() { float val =3.456; std::strings
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”。你不需要向我解释,我知道这些东西。这应该是答案的一部分。现在更好了,但是#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);