в зависимости от 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.
Помните, что двойное преобразование зависит от региона. Десятичный разделитель будет зависеть от вашего местоположения.
, конечно, он не будет работать - AfxMessageBox ожидает двойной, почему он должен иметь возможность получить cstring? – Infested
AfxMessageBox не ожидает двойной ... – zmbq
@zmbq does not AfxMessageBox (* double_value *); не предполагайте, что он ожидает двойной? – Infested