我对编码很不熟悉,在过去的几天里,我一直在探索WINAPI并试图学习一些新的东西,所以我决定做一个计算器(老实说,比我想象的要难)。
现在我已经使一切工作,但剩下的唯一问题是,当我尝试使用计算器时,我总是得到这样的结果:22+22 = 44.0000000。是否有一种方法,我可以格式化编辑框显示十进制数字只有在需要的时候,或者也许有什么我做错了在功能?
我在下面包含了一个计算函数(用于乘法):
void multiply() {
WCHAR A[20], B[20];
GetWindowText(hOutputBot, A, 20);
GetWindowText(hOutputTop, B, 20);
double Aa = std::stof(A);
double Bb = std::stof(B);
double Res = Bb * Aa;
std::wstring s = std::to_wstring(Res);
LPCWSTR str = s.c_str();
SetWindowTextW(hOutputBot, str);
}
当您使用std::to_string()
函数时,自定义格式并不真正可用。相反,您可以使用标准格式化的输出操作符将数据写入字符串流,然后从中读取std::string
:
// std::wstring s = std::to_wstring(Res);
std::wstringstream ss; ss << Res; // Write value to string stream
std::wstring s; ss >> s; // ... then read it into string.
//...
LPCWSTR str = s.c_str();
(注意你需要#include <sstream>
.)
double
类型的默认输出格式类似于在C-styleprintf()
函数中使用%lg
格式说明符;但是,如果您愿意,您可以使用<iomanip>
标准头中的各种函数添加进一步的自定义。