-5

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

4

3 回答 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 将包含val3.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 回答