2012-02-21 3 views
0

私はクロスプラットフォームのアプリケーションのログをやっている、と私はそれがC++のデフォルトのログシステムが使用する例アンドロイドのために来るとき、私が何をすべきかを理解しようとしているのprintfのためにprintf形式の関数。しかし、私は簡単にログインする「< <」演算子を使用したい、たとえば書き込みはCOUT、フォーマットされたデータ

std::string myName = Johan; 
int myID = 1; 
mLogger << "Hello my name is: " << myName << " and my ID is: " << myID; 

のために今どのように1は、printfのフレンドリーなフォーマットにこれを変換するに行きますか?これを行う簡単な方法はありますか?

EDIT:mLoggerは出力ストリームです。私は '< <'演算子をオーバーロードして、何らかの形で正しい形式の文字列を入力から作成してprintfに使用しようとしています。それは明確ですか?

+0

'mLogger'何ですか?ストリングストリーム? – jrok

答えて

2

あなたはメッセージをフォーマットする文字列ストリームを使用することができます。

std::ostringstream msg; 
std::string myName = "Johan"; 
int myID = 1; 

msg << "Hello my name is " << myName << " and my ID is: " << myId; 

printfに文字列を渡すと、その後かなり単純です:

printf("%s", msg.str().c_str()); 
1

printf("Hello my name is: %s and my ID is: %d", myName.c_str(), myId);

+0

私はフォーマットを知っています。つまり、「<<」からの入力に基づいてそれを構築するにはどうすればいいですか? – KaiserJohaan

+0

それがあなたの目標なら、@jrokの答えを考えてください – jglouie