我刚刚开始学习 C++/XAML Windows 商店应用程序开发,但在我的一生中,我找不到将变量值打印到 VS2012 中的“输出”窗口的好方法。
Debug.WriteLine()
Windows 应用商店应用程序似乎不存在,除了OutputDebugString()
无法用于打印变量值(没有一些繁重的格式)之外,我找不到其他打印方式。
是否有一种简单的方法来打印示例行:
鼠标位置 X:12
例如,其中 12 是来自 的整数MouseDelta
。
谢谢你的时间,
雨披
我刚刚开始学习 C++/XAML Windows 商店应用程序开发,但在我的一生中,我找不到将变量值打印到 VS2012 中的“输出”窗口的好方法。
Debug.WriteLine()
Windows 应用商店应用程序似乎不存在,除了OutputDebugString()
无法用于打印变量值(没有一些繁重的格式)之外,我找不到其他打印方式。
是否有一种简单的方法来打印示例行:
鼠标位置 X:12
例如,其中 12 是来自 的整数MouseDelta
。
谢谢你的时间,
雨披
此解决方案使用包装器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);
这是一个不错的选择: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 应用商店应用程序中安全地使用。
不是真的,不。您可以编写一个小函数,其格式类似于printf
并将结果字符串传递给,OutputDebugString()
但没有更简单的方法可用。
我想您可以使用ToString()
, Platform::String::operator+
, 和Platform::String::Data()
来完成此操作;虽然有点丑:
OutputDebugString( ("mouse position X:" + MouseDelta.X.ToString())->Data() );