-157.571 91.223-165.118 -59.975 0.953 0 0.474 0 0 0.953 0 0.474 0.474 0 5.361 0 0 0.474 0 5.361 ...のような浮動小数点数のバッファを受け取っていますが、それらは文字で表示されています...今私は1つの値を取得し、変数に入れたい...任意の1つ私を助けてください...私はmemcpyを使用しています...私は8つの値を-157.571として取る8バイトをコピーしています。 「 - 」と「。」を含む....これにはどんな解決策もあります。LinuxでのC++プログラミング
答えて
私が正しく理解していれば、何らかの種類の文字列に値が格納されており、そこから浮動小数点値を取得したいとします。その場合、使用している言語によって異なります。 C++を使用している場合は、std::istringstream
を使用して変換を実行する必要があります。 C、(iostream
ではなくC++のcstdio
システム)を使用している場合は、sscanf
を使用してください。 C#を使用している場合は、Double.TryParse
を使用する必要があります。
私はsscanfを使用していますが、使用していません...シンプルな例を送ることができます.. C++ – bindu
@bindu: "役に立たない"とはどういう意味ですか?使用しているコードを投稿してください。おそらくコメントできます。また、正しい言語を参照するように質問を修正してください!あなたがあなたの質問に良い答えを得たい場合は、最初に良い質問を書く必要があります。たとえば、実際の質問とはまったく関係ないのに、あなたのタイトルに「Linux」があるとします。 –
私は、MATLABからのデータをC++コードで受信しています...私は-157.571として91.223 -165.118 -59.975 0.953 0 0.474 0 0 0.953 0 0.474 0.474 0 5.361 0 0 0.474 0 5.361..in C++を受け取りました。しかし、彼らは文字列です....私は1つ1つの値を取得したい – bindu
空白で区切られた浮動小数点数の文字列があります。
strtof()
を使用して、一度に1つずつfloat
値に変換することができます。
float strtof(const char *nptr, char **endptr);
where
には、変換された最後の文字へのポインタが含まれるため、文字列を処理するために使用できます。nptr
は、変換する文字列であり、endptr
は、charポインタへのポインタです。 endptr
例えば、
適切なエラーチェックを使用すると、文字列の末尾をオフに実行しないように適用されるべきであるchar *rawString; char **walkPtr; float convertedValue; /* do something to collect the next series of floats */ /* and now do the conversions */ *walkPtr = rawString; while(still_some_string_to_process) { convertedValue = strtof(*walkPtr, walkPtr); // increment the pointer to skip over the delimiting space *walkPtr++; }
など
のは、フロートのごバッファがこの文字列あるとしましょう:
"-157.571 91.223 -165.118 -59.975 0.953 0 0.474 0 0 0.953 0 0.474 0.474 0 5.361 0 0 0.474 0 5.361"
最もきれいなC++アプローチは、これをstd::istringstream
にロードしてから、ストリームを使用してfloatの値は...すなわち今
std::istringstream str(buffer);
あなたはfloat値を抽出するためにオペレータにストリームを使用し、これ以上存在しなくなるまでこれを繰り返すことができます(ヒント:ストリームフラグをチェックする)必要に応じて
str >> {float}; // then do something with {float}
をこの抽出された値をstd::vector
にプッシュして、文字列内の浮動小数点数を得ることができます。私は完全なコードを書いていない、ちょうどあなたにアイデアを与える疑似...
{float}は、使用前に浮動小数点型の変数名に置き換えられることを意味します.btw –
- 1. USBプログラミング:C/Linux
- 2. linux BluetoothプログラミングのC
- 3. LinuxでのC/Socketプログラミングでのチャットルーム
- 4. CでのLinuxプログラミングの重要なトピック
- 5. lapackeまたはclapackでlinuxのc/C++でプログラミングする場合
- 6. Linux Cプログラミングはユーザーとして実行
- 7. Linuxシェル:VLCプログラミング
- 8. Windowsプログラマー向けのLinuxプログラミングに関するヒント(C/C++)
- 9. Xbox 360 for linuxプログラミング
- 10. linuxのC/C++でウェブカメラパン/チルト/ズーム機能をプログラミングしていますか?
- 11. C/C++でのステガノグラフィアプリケーションのプログラミング
- 12. Linuxでのプログラミングに使用するツール
- 13. サーバーエラーLinux上でPHPのプログラミング時
- 14. C/C++ Vistaでのプログラミング
- 15. Linux Cプログラミング:デバイスのパーティション情報を取得するには?
- 16. WindowsでのCプログラミング
- 17. MFCプログラミングでのC++
- 18. CでのDirectXプログラミング?
- 19. UNIXでのC++プログラミングの学習のための良い本(pref Linux)?
- 20. Visual C++/C#でのWinFormsのプログラミングとVisual C++(MFC)でのプログラミングとの違い
- 21. LinuxでのCプログラミングの新機能、型キャスト時にぶつかりました
- 22. Cプログラミング
- 23. C++プログラミング
- 24. のLinuxプログラミング:デバイスファイルへの書き込み
- 25. Cプログラミングのセグメンテーションフォールト
- 26. Cでのスーパータイプへのプログラミング#
- 27. UbuntuでのCプログラミングのマニュアルページ
- 28. MacOS-XとLinux APIのプログラミング - POSIX互換?
- 29. EclipseでのCプログラミング(ライブラリミステリー)
- 30. C#でのアスペクト指向プログラミング
C++またはC#?この質問はほとんど意味がありません。 –
誰かがひどくひどく混乱しています。 –