我在将双精度型转换为字符串然后转换为消息框时遇到问题。根据我的阅读,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”的参数不兼容。

关于我要去哪里的任何想法?

最佳答案

默认情况下,您的项目可能设置为使用宽(Unicode)字符,因此您应该使用wchar_twsprintf(更好的是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);


或者,如果您想使用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);

关于c - 在消息框中显示双,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10375063/

10-13 08:19