2010-11-26 13 views
-1

-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++プログラミング

+1

C++またはC#?この質問はほとんど意味がありません。 –

+1

誰かがひどくひどく混乱しています。 –

答えて

1

私が正しく理解していれば、何らかの種類の文字列に値が格納されており、そこから浮動小数点値を取得したいとします。その場合、使用している言語によって異なります。 C++を使用している場合は、std::istringstreamを使用して変換を実行する必要があります。 C、(iostreamではなくC++のcstdioシステム)を使用している場合は、sscanfを使用してください。 C#を使用している場合は、Double.TryParseを使用する必要があります。

+0

私はsscanfを使用していますが、使用していません...シンプルな例を送ることができます.. C++ – bindu

+0

@bindu: "役に立たない"とはどういう意味ですか?使用しているコードを投稿してください。おそらくコメントできます。また、正しい言語を参照するように質問を修正してください!あなたがあなたの質問に良い答えを得たい場合は、最初に良い質問を書く必要があります。たとえば、実際の質問とはまったく関係ないのに、あなたのタイトルに「Linux」があるとします。 –

+0

私は、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

0

空白で区切られた浮動小数点数の文字列があります。

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

など

1

のは、フロートのごバッファがこの文字列あるとしましょう:

"-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にプッシュして、文字列内の浮動小数点数を得ることができます。私は完全なコードを書いていない、ちょうどあなたにアイデアを与える疑似...

+0

{float}は、使用前に浮動小数点型の変数名に置き換えられることを意味します.btw –

関連する問題