2017-01-16 14 views
0

私が作成したプログラムをデバッグしています。プログラムはエラーなしでコンパイルされ実行されます。EclipseデバッガC++ 'ソースがありません "std :: ostream :: operator <<()"'; 'std :: endl' issue

デバッガgcc4.9.3(rtools_34)を使用する場合、私はメッセージを取得:

' "のstd :: ostreamに::演算子< <()" のために利用可能なソース'

任意のステップオーバーstd :: coutを含む行< < "テキスト" < < std :: endl; これにより、デバッグがクラッシュします。しかし、不正なコードを越えてブレークポイントを設定すると、問題なくスキップすることができます。

コードには、iostream、ostream、およびstringが含まれます。

このコードは、この問題が発生していない他のコンパイラでもデバッグされています。これは、新しいコンパイラのためのEclipseへの新しいインポートですので、私は間違っていることを設定していると仮定しています。

代わりに '\ n'を使用するとstd :: endlに問題があるようです。

エラーメッセージの解釈に関するヒントや、問題の解決方法について大変感謝しています。

+0

'' Text''を 'std :: string'に置き換えるとどうなりますか?コンパイラがリテラルを '<<'可能な型に変換できないようです。リテラルを 'std :: string'の明示的なインスタンスに置き換えると、別の手がかりを与えるかもしれません。 – Ben

+0

以下を含めることを意味しますか: std :: string test = "Text"; std :: cout << test << std :: endl; この場合、エラーは同じです。 – haffamoto

+0

私は同じ問題に遭遇しました。あなたはそれを修正することができましたか? http://stackoverflow.com/questions/43020983/eclipse-debugger-c-no-source-available-for-stdostreamoperator – drorbr

答えて

0

あなたは #include <string>に覚えていますか?

申し訳ありませんが、それが明らかであり、チェックされている場合は、あなたの質問からは間違いないとはっきりしていませんでした!

+0

問題はありません。はいコードに含まれている#include haffamoto

+0

もう一度調べてください(修正することはないかもしれませんが、もう一度絞り込んでください)。 std :: cout << "テキスト\ n" - endlのように\ nを明示的に使用することがありますiostreamにインクルードする必要がありますが、これはちょうどその場合にチェックされます(C++ 11よりも前に明示的に指定する必要はありません) –

+0

私が考えることのできる最後のことは、コンパイラのデバッグフラグが設定されていないことです。私が提案した3つの提案はすべて、あなたがここに来る前にすでにチェックしておいたと思うシンプルなものだと気づいていますが、その場合にリマインダーとして害を及ぼさないことを願っています。うまくいけば、誰かが一緒に来て、それがこれらのどれでもないと仮定してこれを解決するでしょう! –

関連する問題