在C 中浮动到字符串转换

float to String conversion in c++

本文关键字:字符串 转换      更新时间:2023-10-16

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

在C 11中,您可以使用std :: to_string将数值转换为std::string,您可以使用c_str()方法将其变成C-Style字符串。

这也将有效:

#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之前,请验证您设置了不错的内存分配和垃圾恢复。如果不是,请使用分配器将字符串从固定尺寸的内存池分配。搜索"碎片"。

此代码将为您做到这一点:

#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;
}

测试将包含val的浮子,如3.456。

您想做的是使用sprintf,在这种情况下,您可以这样做:

char buffer[40]
float val =3.456;
sprintf(buffer, "%f", val);
std::string out(buffer);
std::cout << out << std::endl;

希望有帮助。