実行ファイルなどのログ取得をしたいときにDebugViewを使うのですが、時間がたつと使い方を忘れてしまうことが多いので、すぐ使えるようにまとめようと思います。
OutputDebugString
OutputDebugStringを使用したログ取得方法です。
この関数を使用するには、アプリケーションにWindows.hヘッダーを含める必要があります。
void OutputDebugStringA([in, optional] LPCSTR lpOutputString);
lpOutputStringで指定した文字列を取得します。
関数名にDebugと入っていますが、Releaseビルドしたものでも出力されます。
format
文字列だけをログ表示したい場合は上記の方法で良いですが、値もログ出力したい場合はFormatを使用します。
namespace std {
template<class... Args>
string format(format_string<Args...> fmt, Args&&... args);
template<class... Args>
wstring format(wformat_string<Args...> fmt, Args&&... args);
template<class... Args>
string format(const locale& loc, format_string<Args...> fmt, Args&&... args);
template<class... Args>
wstring format(const locale& loc, wformat_string<Args...> fmt, Args&&... args);
}
argsを書式文字列fmtに従って設定し、文字列を返します。
formatはC++20以降で使用できるため、C++17などを使っている場合はC++言語標準を変更する必要があります。
C++言語標準はプロジェクトのプロパティ>全般のC++言語標準で変更できます。
formatライブラリをインクルードしないと使用できないため、忘れずに追加してください。
#include <format>
以下、aとbの和をログ表示する処理と結果になります。
OutputDebugStringAは
int a = 5, b = 2;
int sum = a + b;
auto test = format("sum: {}", sum);
OutputDebugStringA(test.c_str());
参考にしたサイト
https://learn.microsoft.com/ja-jp/windows/win32/api/debugapi/nf-debugapi-outputdebugstringa
https://learn.microsoft.com/ja-jp/windows/win32/api/debugapi/nf-debugapi-outputdebugstringw
https://cpprefjp.github.io/reference/format/format.html