問題タブ [endl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2885 参照

c++ - endl マニピュレータはどこで定義されていますか

endlこれがマニピュレータであり、内部的'\n'にバッファに配置され、バッファがフラッシュされることがわかっています。どこでendl定義されていますか?は何ですかendl、それはマクロですか、関数ですか、それとも変数ですか、それともクラスですか、それともオブジェクトですか? endl独自のマニピュレータを定義するにはどうすればよいですか?

0 投票する
3 に答える
2224 参照

c++ - __LINE__ マクロなどをサポートする C++ スタイルのロガー

のように使用できるロガーを作成したいのですが、日付、時刻、、、std::coutなどの追加データをログに記録して、ファイルに自動的に保存する必要があります。__LINE____func____FILE__

期待される出力

不十分な解決策

これを行うには__LINE__、ロガーを呼び出す行に direct などのマクロを配置する必要があります。そうしないと、マクロが正しく機能しません。std::endlこの黒魔術を次のように実行するマクロに置き換えることができることがわかりました。

このマクロlogendlは、クラスの静的変数を使用してToolLogger、 の値を保存し、__LINE__後で必要に__func__なり__FILE__ます。したがって、実際にロガーを使用すると、次のようになります。

クラスでは、これを機能させるために をオーバーロードするoperator<<必要があり、そのうちの 2 つが必要です。std::string1 つはまたはのような通常の値を取得するためのもので、もう 1 つはマニピュレータintを取得するためのものです。std::endl私のクラスで最も重要なことは次のとおりです。

問題

このソリューションの問題は、ロガーを次の 2 つの方法で使用できることです。

実際には、マニピュレータoperator<<を取るクラスからを削除し、std::endl別の方法で解決する必要がありますが、どうすればよいですか? マクロで他のカスタム マニピュレータに変更することを考えてstd::endlいました。logendlこのカスタム マニピュレータは、実際に を行っている作業を行いますが、そのoperator<<方法がわかりません。他の解決策を探していますが、何か提案はありますか?

0 投票する
0 に答える
362 参照

python - C++ 出力ストリームが endl でフラッシュされず、実行が停止する

cout複数のステートメントを含む C++ プログラムがあります。それらのすべてが . で終わることを確認しましたendl。私の問題は、ユーザーが Enter キーを押すまでプログラムがほとんど停止しないことです (そのため、出力バッファーが常にフラッシュされるとは限りません)。Enter キーを押すと、プログラムの実行が再開されます。私のプログラムの実行には数時間かかるので、これはかなり問題です。プログラムは 1 分後に停止することもあれば、1 時間以上後に停止することもあります。

小さなコード スニペットを次に示します。

私は埋め込み Python を介して Theano を使用しており、私の Python コードには print ステートメントも含まれていることに注意してください。私のPythonコードはsys.stdout.flush()、各印刷の後ではなく、印刷のみを呼び出します。ただし、Python で生成された print ステートメントの後でプログラムの実行がハングすることはまれです。明らかな何かを見逃しましたか?sys.stdout.flush()Python コードでを呼び出す必要がありますか? 残念ながら、私のプログラムは数十のクラスで構成されているため、これ以上のコードを提供することはできません。

[編集] ハングしているときにプログラムをデバッガーで一時停止しましたが、表示できるソースがありませんでした。コール スタックは次のとおりです。 ここに画像の説明を入力

スレッドが待機しているようです。ただし、これらのスレッドを自分で設定したことはありません。それらは、Cuda または私が使用している Havok 物理エンジンによって生成されました。調査します。

0 投票する
2 に答える
1386 参照

c++ - シンボル endl と cout を解決できませんでした

私は読んでいる本からこのコードを書きましたが、私のコンパイラはシンボル cout と endl を解決できないと警告しています。何故ですか。

0 投票する
1 に答える
707 参照

c++ - C++ cout.endl() はバッファをクリアし、cout.flush() はしません

問題は私が使用しているIDEにありました-CLion 1.2.4は、独自の出力ウィンドウ内で誤った出力を提供しますが、解決されました。

次のコードは、次のように、〜1000より大きいベクトルを操作するときに繰り返し出力を提供します。

bubblebubble0.265596bubble0.2655960.171889bubble0.2655960.1718890.265644 shell000

すべての出力の後に endl を呼び出すと、すべて問題ないように見えます。

バブル
0
0.015626
0.015628
シェル
0
0
0

しかし、.flush() でバッファをクリアしようとすると、同じ繰り返し出力が得られます。

0 投票する
2 に答える
71 参照

c++ - GNU g++ 4.9.2 での endl コンパイルの問題のオーバーロード

GNU g++ 4.9.2 を使用しているときに、次のコード スニペットのコンパイルに問題があります (g++ 2.95.3 で正常にコンパイルするために使用されます)。

エラーは次のとおりです。

ガイド/ヘルプしてください。

0 投票する
1 に答える
66 参照

c++ - 専用の非テンプレート関数が実装されていますが、std::endl はオーバーロードされた operator<< で動作しません

Logging::Logger次の機能を持つクラスがあります。

そして、次のコード:

すべての演算子が実装されているように見えますが、次のエラーが発生します。

エラー C2678: バイナリ '<<': タイプ 'const Logging::Logger' の左側のオペランドを取る演算子が見つかりません (または、受け入れ可能な変換がありません)

もちろん、すべてが機能しているわけではありませんendl

私は次の答えを見ました:

operator<< をオーバーロードするとき、std::endl は不明な型です

私は何が欠けていますか?

0 投票する
1 に答える
879 参照

c++ - std::flush がない場合、セグメンテーション違反が発生します

この質問には、すでにいくつかのアプローチがあります。¹ ² ³

でもこれは全然違う!行をコメントアウトするstd::flushとセグメンテーションフォルトが発生しますが、この行を追加するとセグメンテーションフォルトは発生しません!

また、試しgdbました。この関数をROSこのデバッグ手法と-g オプションでコンパイルして使用していますが、関数名が出力されません。

  • 探してLENGTH_INDEXstm_buf_t[]大丈夫です。

そしてまた; std::cout << std::flush;この関数の呼び出しがある別の場所から呼び出すと、Segfault も処理されます。

私の次のアプローチは何ですか?