0

doubleを文字列に変換してからメッセージボックスに変換する際に問題が発生します。私が読んだことから、sprintfは(大まかに、しかし特定の点のために最良の選択ではありません)私が望む関数です。これが私のサンプルコードですが、どこが間違っているのかわかりません。

DOUBLE time;
char timearray[30];
time = (double)(end.QuadPart - st.QuadPart)/(double)freq.QuadPart;
sprintf(timearray, "%lf", time);

ここからどこへ行くの?私は次のようなことを試しました。

MessageBox(NULL, timearray, TEXT("mb"), MB_OK);

ただし、これにより、timearrayパラメーターで次のエラーが発生します。タイプ「* char」のエラーは、タイプ「LPCWSTR」のパラメーターと互換性がありません。

私がどこで間違っているのかについてのアイデアはありますか?

4

1 に答える 1

1

おそらく、あなたのプロジェクトはデフォルトでワイド (Unicode) 文字を使用するように設定されているので、wchar_tand wsprintf(できればwnsprintf) を使用する必要があります。

double time;
wchar_t buffer[30];
time = (double)(end.QuadPart - st.QuadPart)/(double)freq.QuadPart;
_snwprintf(buffer, sizeof(buffer)/sizeof(*buffer), L"%lf", time);
MessageBoxW(NULL, buffer, L"mb", MB_OK);

または、s を使用する場合TCHAR:

double time;
TCHAR buffer[30];
time = (double)(end.QuadPart - st.QuadPart)/(double)freq.QuadPart;
_sntprintf(buffer, sizeof(buffer)/sizeof(*buffer), _T("%lf"), time);
MessageBox(NULL, buffer, _T("mb"), MB_OK);
于 2012-04-29T19:14:14.283 に答える