gpt4 book ai didi

c++ - 在 C++ 中将 double 转换为字符串会给出奇怪的字符(汉字?)

转载 作者:行者123 更新时间:2023-11-30 01:40:03 28 4
gpt4 key购买 nike

我正在尝试将两个 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”。相反,我得到了这些奇怪的字符!如果它们不是我在标题中提到的汉字,我很抱歉 - 我只会英文

如有任何建议或意见,我们将不胜感激!谢谢。

最佳答案

问题是您的 TRACE 宏需要宽字符串,但您传递的是窄字符串:查看 wvsprintf() 函数中的 w .

使用 std::to_wstring() 它应该可以工作。

或者,您可以使用 %hs 来表明您的参数是窄字符串。或者您可以更改宏并使其调用 vsprintf()

关于c++ - 在 C++ 中将 double 转换为字符串会给出奇怪的字符(汉字?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44289852/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com