0

我在将双精度转换为字符串,然后再转换为消息框时遇到问题。从我读过的内容来看, 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);

或者,如果您想使用TCHARs:

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 回答