输出要调试的浮点数

Output float to debug

本文关键字:浮点数 调试 输出      更新时间:2023-10-16

我想知道是否有替代OutputDebugString,但为浮动代替?因为我希望能够在Visual studio的输出中查看值

首先将float转换为字符串

std::ostringstream ss;
ss << 2.5;
std::string s(ss.str());

然后用这个

打印新生成的字符串
OutputDebugString(s.c_str());

可选地,你可以用

跳过中间字符串
OutputDebugString(ss.str().c_str());

我把Eric的答案和Toran Billups的答案结合在了一起https://stackoverflow.com/a/27296/7011474得到:

std::wstring d2ws(double value) {
    return s2ws(d2s(value));
}
std::string d2s(double value) {
    std::ostringstream oss;
    oss << value;
    return oss.str();
}
std::wstring s2ws(const std::string& s)
{
    int len;
    int slength = (int)s.length() + 1;
    len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0);
    wchar_t* buf = new wchar_t[len];
    MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, buf, len);
    std::wstring r(buf);
    delete[] buf;
    return r;
}
double theValue=2.5;
OutputDebugString(d2ws(theValue).c_str());

编辑:感谢Quentin的评论,有一个更简单的方法:

std::wstring d2ws(double value) {
    std::wostringstream woss;
    woss << value;
    return woss.str();
}
double theValue=2.5;
OutputDebugString(d2ws(theValue).c_str());