我在 LPC 1769 微处理器上编程,但我无法弄清楚如何将浮点数转换为字符串,以便可以在我的 Display 上打印它。我正在使用该sprintf
命令,但我的程序仍然显示内存错误。如何将afloat
转换为字符串?我需要在不使用标准库的情况下执行此操作。
问问题
4571 次
3 回答
3
In C++11 you can use std::to_string to convert a numerical value to an std::string
, which you can turn into a C-style string with the c_str()
method.
于 2012-11-05T06:51:43.293 回答
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
内存受限的嵌入式系统上使用之前,请验证您是否设置了合适的内存分配和垃圾回收。如果没有,请使用分配器从固定大小的内存池中分配字符串。搜索“碎片”。
于 2012-11-05T06:49:33.383 回答
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 中的浮点数。
看起来你正在尝试做的是 use sprintf
,在这种情况下你可以这样做:
char buffer[40]
float val =3.456;
sprintf(buffer, "%f", val);
std::string out(buffer);
std::cout << out << std::endl;
希望有帮助。
于 2012-11-05T06:45:17.623 回答