我正在尝试将两个double值转换为C ++中的字符串,以便我可以使用TRACE在输出窗口中查看它们。我正在使用Visual Studio 2017.这是我的主要代码:
double distance = 3.0;
double secondsPassed = 10.0;
TRACE(L"Hello!\n");
TRACE(L"distance = %s seconds passed: %s \n",
std::to_string(distance).c_str(), std::to_string(secondsPassed).c_str());
这是我的TRACE功能的定义:
void TRACE(TCHAR *format, ...)
{
TCHAR buffer[1000];
va_list argptr;
va_start(argptr, format);
wvsprintf(buffer, format, argptr);
va_end(argptr);
OutputDebugString(buffer);
}
这是我输出窗口中显示的内容:
Hello!
distance = ⸳〰〰〰 time: 〱〮〰〰0찀쳌쳌
我不确定为什么两个double值没有被转换为字符串" 3.0"和" 10.0"。相反,我得到这些奇怪的角色!如果他们不是我在标题中提到的汉字,我道歉 - 我只懂英文
非常感谢任何建议或意见!感谢。
答案 0 :(得分:4)
问题在于,您的TRACE
宏需要宽字符串,但您要传递的是较宽的字符串:请查看函数w
中的wvsprintf()
。
使用std::to_wstring()
,它应该有效。
或者,您可以使用%hs
来告诉您的参数是窄字符串。或者您可以更改宏并调用vsprintf()
。