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