gpt4 book ai didi

c - 使用 C 在 Visual Studio 2013 中的输出窗口中显示当前时间

转载 作者:太空宇宙 更新时间:2023-11-04 04:24:27 24 4
gpt4 key购买 nike

我正在尝试在 Visual Studio 的输出窗口中显示当前时间。我需要它用于调试目的。由于 printf() 输出不打印到 Visual Studio 的输出窗口,我需要使用 OutputDebugString()。

代码编译正确但输出不正确。有人可以帮我吗?谢谢!

char buff[100];
time_t rawtime;
struct tm * timeinfo;
time(&rawtime);
timeinfo = localtime(&rawtime);

sprintf(buff, "[%d %d %d %d:%d:%d]", timeinfo->tm_mday, timeinfo->tm_mon + 1, timeinfo->tm_year + 1900, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
OutputDebugString(LPCWSTR(buff));

Visual Studio 输出窗口打印:

?‹???????]

预期:日期和时间打印正确。

最佳答案

我知道,Michael 的评论已经解决了您的问题。但是,您应该知道问题的原因,以免将来再次犯同样的错误。所以,这个答案总结了这一点。

首先,一些基础知识::OutputDebugStringA & OutputDebugStringW中的AW,分别代表Ansi宽字符.

Ansi 字符最多占用 1 个字节的内存,如 charWide 字符占用 2 个字节的内存,如 wchar_t.

更多引用,你可以看这里::Difference between char* and wchar_t*

现在,当您已经将 buff 定义为 char 时,为什么还要将其类型转换为 LPCWSTR。有关 LPCWSTR 的更多引用,请参阅此::What does LPCWSTR stand for and how should it be handled with?

所以,基本上,您应该调用 OutputDebugStringA(buff)

另一种解决方案是,将buff定义为宽字符数组,

wchar_t buff[100];
wsprintf(buff, L"[%d %d %d %d:%d:%d]", timeinfo->tm_mday,
timeinfo->tm_mon + 1, timeinfo->tm_year + 1900, timeinfo->tm_hour,
timeinfo->tm_min, timeinfo->tm_sec);
OutputDebugStringW(buff);

关于c - 使用 C 在 Visual Studio 2013 中的输出窗口中显示当前时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43091950/

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