5

我刚刚开始学习 C++/XAML Windows 商店应用程序开发,但在我的一生中,我找不到将变量值打印到 VS2012 中的“输出”窗口的好方法。

Debug.WriteLine()Windows 应用商店应用程序似乎不存在,除了OutputDebugString()无法用于打印变量值(没有一些繁重的格式)之外,我找不到其他打印方式。

是否有一种简单的方法来打印示例行:

鼠标位置 X:12

例如,其中 12 是来自 的整数MouseDelta

谢谢你的时间,

雨披

4

3 回答 3

1

此解决方案使用包装器OutputDebugString

void WinLog(const wchar_t *text, int n)
{
    wchar_t buf[1024];
    _snwprintf_s(buf, 1024, _TRUNCATE, L"%s %d\n", text, n);
    OutputDebugString(buf);
}

可以这样调用:

WinLog(L"The Answer is", 42);
于 2013-11-16T20:38:03.263 回答
1

这是一个不错的选择:http ://seaplusplus.com/2012/06/25/printf-debugging-in-metro-style-apps/ ,基本上它为您的 Windows 商店应用程序分配一个控制台,显然这将失败认证但鉴于这可能仅用于调试目的,它会很好。我在这里复制相关代码:

// Include Windows.h for WINBASEAPI and WINAPI:
#include <Windows.h>

// Declare AllocConsole ourselves, since Windows.h omits it:
extern "C" WINBASEAPI int WINAPI AllocConsole();

auto main(Platform::Array<Platform::String^>^) -> int
{
    AllocConsole();

    std::wcout << L"Hello there!" << std::endl;
    std::getchar();

    return EXIT_SUCCESS;
}

但是,如果您想在您的应用程序中看到这样的输出,那么您可能需要为现代 UI 应用程序使用控制台类,它实现了 .NET System.Console 的一部分并且可以在 Windows 应用商店应用程序中安全地使用。

于 2013-06-24T16:54:31.910 回答
1

不是真的,不。您可以编写一个小函数,其格式类似于printf并将结果字符串传递给,OutputDebugString()但没有更简单的方法可用。

我想您可以使用ToString(), Platform::String::operator+, 和Platform::String::Data()来完成此操作;虽然有点丑:

OutputDebugString( ("mouse position X:" + MouseDelta.X.ToString())->Data() );

于 2013-06-21T01:01:07.363 回答