我在将双精度型转换为字符串然后转换为消息框时遇到问题。根据我的阅读,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_t
和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);
或者,如果您想使用
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/