2012-03-07 7 views
0

私は文字列ストリームで奇妙な動作をしています。 2つのストリングストリームを作成すると、正しく書き込まれ、エラーが発生します。最後の行のために:文字列ストリームのエラーが一貫していません

ostringstream s; 
ostringstream d; 
s<<test<<endl; 
d<<test<<endl; 

(テストはchar *型である)これはメッセージ「種類 "int型の無効なオペランドとバイナリ『演算子< <』から『のconstのchar *』エラー」を与えます。

ostringstream s; 
ostringstream d; 
d<<test<<endl; 
d<<test<<endl; 

これはメッセージ「エラー:タイプ "int型の無効なオペランドとバイナリ『演算子< <』から『のconstのchar *』」を与えるDへの書き込みの両方の行のために。

2つのストリームは同じである必要があります。なぜ、dが動作しないのかわかりません。 sとdの宣言の順序を変更しても何も変わりません。誰にもこれがどうして起こるのかというアイデアはありますか?

ありがとうございます!

+0

このエラーを示す最小限の完全なプログラムを作成して投稿してください。 http://sscce.org –

+0

'test'変数の正確な内容を確認できますか?私はstring test = 'test'を使ってこのコードを実行しました。およびd << test.c_str()<< endl;それは何の問題もなかった。 –

+0

申し訳ありませんが皆、私は愚かな変数をシャドウしていました、今修正!ご協力いただきありがとうございます! – akroy

答えて

2

変数dが既に宣言されているため、別のタイプの変数を使用しているときと同じエラーが発生します。

+1

ああ、ありがとうございます!実際のプログラムではわかりやすい名前を使用していましたが、変数名を再利用することはできました。世界は今より意味をなさない! – akroy

+0

時々コンパイラのエラーは、それらが発生する本当の理由をカバーしないので、あなたが持っていた理由を暗記する必要があります。 – Seagull

+0

私は - 壁がこの状況について警告しなければならないと考えます –

関連する問題