抱歉我的英文。
我需要将double值转换为CString,因为我需要做AfxMessageBox(double_value);
我发现了这个:
std::ostringstream ost;
ost << double_value;
std::cout << "As string: " << ost.str() << std::endl;
//AfxMessageBox(ost.str()); - Does not work.
我怎么能这样做?
答案 0 :(得分:13)
AfxMessageBox
需要CString
个对象,因此请将双精度格式化为CString
并传递:{/ p>
CString str;
str.Format("As string: %g", double);
AfxMessageBox(str);
编辑:如果您希望将值显示为整数(小数点后没有值),请改用:
str.Format("As string: %d", (int)double);
答案 1 :(得分:0)
那是因为ost.str()不是CString,而是C ++字符串对象。您需要将其转换为CString:new CString(ost.str())
。
答案 2 :(得分:0)
根据您需要的Unicode设置
std::ostringstream ost;
ost << std::setprecision(2) << double_value;
std::cout << "As string: " << ost.str() << std::endl;
AfxMessageBox(ost.str().c_str());
或
std::wostringstream ost;
ost << std::setprecision(2) << double_value;
std::wcout << L"As string: " << ost.str() << std::endl;
AfxMessageBox(ost.str().c_str());
这是必需的,因为CString具有const char*
或const wchar_t*
的构造函数。 std :: string或std :: wstring没有构造函数。您也可以使用CString.Format,它具有与sprintf相同的notaveave问题。
请注意,双重转换取决于区域设置。十进制分隔符取决于您的位置。