-5

LPC 1769 マイクロプロセッサでプログラミングしていますが、浮動小数点数を文字列に変換して Display に出力する方法がわかりません。コマンドを使用してsprintfいますが、プログラムでメモリ エラーが表示されます。a を文字列に変換するにはどうすればよいfloatですか? 標準ライブラリを使用せずにこれを行う必要があります。

4

3 に答える 3

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に、適切なメモリ割り当てとガベージ リカバリが設定されていることを確認してください。そうでない場合は、文字列のアロケータを使用して、固定サイズのメモリ プールから割り当てます。SO で「断片化」を検索します。

于 2012-11-05T06:49:33.383 に答える
3

C++11 では、std::to_stringを使用して数値を に変換std::stringできます。これは、メソッドで C スタイルの文字列に変換できますc_str()

于 2012-11-05T06:51:43.293 に答える
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;
}

valtest には、3.456 のようにfloat が含まれます。

あなたがやろうとしているように見えるのは usesprintfです。その場合、これを行うことができます:

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 に答える