で、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 件のコメント:
コメントを投稿