文字列ストリームを受け取り、次のようにするメソッドを作成することは可能ですか?
void method(string str)
void printStringStream( StringStream& ss)
{
method(ss.str());
}
そして、このように呼び出すことができます
stringstream var;
printStringStream( var << "Text" << intVar << "More text"<<floatvar);
<<演算子を調べたところ、オブジェクトが返されているように見えますが、ostream&
読み取りがthis
間違っているか、正しく実装されていない可能性があります。
本当に必要なのは、文字列として連結して関数に渡すクリーンな方法です。私が見つけた最もクリーンなものはstringstreamオブジェクトでしたが、それでもまだ多くのことが望まれています。
ノート:
Visual Studio 2010を実行しているため、多くのc++11
回答を使用できません(意志に反しますが、それでも)
私はアクセスできるBoost
ので、それに夢中になります。
この混乱を一掃する限り、私はカスタムメソッドに反対しません。
編集:
@Mooing Duckの回答と@PiotrNycz構文を組み合わせることで、次のようなコードを作成するという目標を達成しました。
try{
//code
}catch(exception e)
{
printStringStream( stringstream() << "An exception has occurred.\n"
<<" Error: " << e.message
<<"\n If this persists please contact "<< contactInfo
<<"\n Sorry for the inconvenience");
}
これは私が望んでいたのと同じくらいきれいで読みやすいです。
うまくいけば、これは他の人がメッセージを書くのを片付けるのに役立つでしょう。