-1

私は次のものを持っています:

char op; double x, y, z;
istringstream iss("v 1.0 2.0 3.0", istringstream::in);
iss>>op>>x>>y>>z;

しかし、x、y、z の値を出力すると、それらはすべて 0 を返しますか?

アップデート:

私はそれが働いていると思いますが、私はそれを次のように出力しています:

int length=wsprintf(result," V is %d, %d, %d ", x, y, z);
TextOut(hdc,0,0,result,length);

正しい値が表示されません。

ただし、次のように値が int の場合は正常に機能します。

char op; int x, y, z;
istringstream iss("v 1 2 3", istringstream::in);
iss>>op>>x>>y>>z;
4

2 に答える 2

1

%dフォーマット指定子はint, but x, yandを期待していますzタイプはdoubleです。型と書式指定子が一致しない場合、動作は未定義です。の参照ページから、wsprintfa の書式指定子がないように見えることに注意してくださいdouble

代わりにstd::wostringstreamandを使用することを提案します。std::wstring

std::wostringstream ws;
ws << L" V is " << x << L"," << y << L"," << z;
const std::wstring result(ws.str());
TextOut(hdc,0,0,result.c_str(), result.length());
于 2013-01-03T12:15:30.860 に答える
0

ありがとうございます。

他の人にとって、これは私が値を正しく出力するために行ったことです。

int length=sprintf_s(result," V is %0.1f, %0.1f, %0.1f ", x, y, z);
TextOut(hdc,0,0,result,length);

一般的な構文 "%AB" は、小数点の前の A 桁と小数点の後の B 桁を意味します。

皆さんありがとう。

于 2013-01-03T12:26:37.197 に答える