Visual c++ 如何将浮点数打印到visual c++;留言箱?

Visual c++ 如何将浮点数打印到visual c++;留言箱?,visual-c++,Visual C++,我有一个浮点数。我想把它打印在一个信息框里。怎么做 MessageBox(hWnd, "Result = <float>", L"Error", MB_OK); 您必须使用%f格式代码将消息打印到缓冲区,然后在MessageBox()中使用它。当您使用Win32函数的wchar\u t版本时,您应该使用swprintf而不是sprintf: float fp = 2.3333f; const size_t len = 256; wchar_t buffer[len] = {}; s

我有一个浮点数。我想把它打印在一个信息框里。怎么做

MessageBox(hWnd, "Result = <float>", L"Error", MB_OK);

您必须使用%f格式代码将消息打印到缓冲区,然后在MessageBox()中使用它。

当您使用Win32函数的
wchar\u t
版本时,您应该使用
swprintf
而不是
sprintf

float fp = 2.3333f;
const size_t len = 256;
wchar_t buffer[len] = {};
swprintf(buffer, L"%f", fp);
MessageBox(hWnd, buffer, L"Error", MB_OK);
float fp = 2.3333f;
const size_t len = 256;
wchar_t buffer[len] = {};
_snwprintf(buffer, len - 1, L"%f", fp);
MessageBox(hWnd, buffer, L"Error", MB_OK);
为了避免潜在的缓冲区溢出,您还可以使用
\u snwprintf

float fp = 2.3333f;
const size_t len = 256;
wchar_t buffer[len] = {};
swprintf(buffer, L"%f", fp);
MessageBox(hWnd, buffer, L"Error", MB_OK);
float fp = 2.3333f;
const size_t len = 256;
wchar_t buffer[len] = {};
_snwprintf(buffer, len - 1, L"%f", fp);
MessageBox(hWnd, buffer, L"Error", MB_OK);
或者更好地使用
中声明的
std::wostringstream

float fp=2.3333f;
标准:WOSS;

ss您使用的是MessageBox的Unicode版本,这就是为什么必须使用L前缀指定“Error”字符串的原因——这告诉它应该使用宽(16位)字符。正如dalle所说,这意味着您必须将缓冲区指定为wchar\u t,并使用printf的相应wchar\u t版本


您将看到汉字,因为它将您的字节字符串解释为wchar\t字符串。毕竟,您正在显式地将缓冲区转换为wchar\t字符串。

缓冲区类型是什么?我需要执行.c_str()吗?