で、stringstream使えばいいかなということでベタで呼び出すとこうなる(OutputDebugStringWのほうがいいと思うけど、そこは適宜読み替えで)。
std::ostringstream str; str << "Num: " << i << std::endl; OutputDebugStringA(str.str().c_str());
sprintf呼ぶよりはいいと思うのだけど、何回も呼ぼうとするとstr変数がすでにあったりなかったりでややこしい。それで今回は、ラムダ式を使う。
このようなユーティリティ関数を用意して:
void outputDebug(std::function<void(std::ostringstream&)> func) { std::ostringstream str; func(str); OutputDebugStringA(str.str().c_str()); }
こう呼び出す:
outputDebug([&](std::ostringstream& s) { s << "Num: " << i << std::endl; });
どうだろう?ostringstreamの型名を書くのがちょっと悲しいけど、最初よりはいいんじゃないかなと思う。
C++らしさというのは全然わからないので、仰々しくならずにできる、もっといいやりかたがあればぜひ教えてほしい。
0 件のコメント:
コメントを投稿