Я программирую на микропроцессоре LPC 1769, но я не могу понять, как преобразовать число с плавающей запятой в строку, чтобы я мог напечатать его на моем дисплее. Я использую sprintf
команда, но все равно моя программа показывает ошибку памяти. Как мне конвертировать float
в строку? Мне нужно сделать это без использования стандартной библиотеки.
В C ++ 11 вы можете использовать станд :: to_string преобразовать числовое значение в std::string
, который вы можете превратить в строку в стиле C с помощью c_str()
метод.
Это будет работать также:
#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;
Надеюсь, это поможет.