我遇到将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”类型的参数不兼容。
关于我哪里出错的任何想法?
答案 0 :(得分:1)
默认情况下,您的项目可能设置为使用宽(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
s:
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);