問題タブ [ostream]
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.
c++ - cout(C ++)を使用した初期化されていないboolの印刷
bool
コンストラクターによって初期化されていないデータメンバーを持つクラスがあります。私が行った場合
x
が初期化されていないこのクラスのオブジェクトはどこにありbool
ますか。0または1ではなく乱数を取得することがあります(使用してgcc
います。)この動作は?に準拠していStandard
ますか?
c++ - C++-std::ostreamを関数に渡す
私はC++の小さなデバッグインライン関数を考えました:
これは私がそれをどのように使いたかったかの例です:
ただし、計画どおりに機能しません。詳細レベルが関数に渡されたデバッグレベルよりも高いか等しい場合にのみメッセージを出力したかったのですが、デバッグレベルに関係なく毎回出力されるようで、データは残ります。 coutバッファ内。今のところ、この関数は私が最近持っていた最良のアイデアではないと思いますが、それでもcout、cerrなどに関連するバッファーをクリアする方法があるかどうか知りたいです。この種の関数を正しく機能させることは可能ですか?
java - JNI を使用して C++ から std::ostream を介して Java にテキスト データを取得する
std::ostream
テキスト (トレース情報) を継続的に出力するために、引数としてを受け取る C++ のクラスがあります。このテキストをできるだけ効率的に Java 側に渡す必要があります。これを行う最善の方法は何ですか?ダイレクトバッファを使おうと思っていたのですが、関数呼び出しをすべてJavaに渡して処理するという方法もあるのですが、JNI呼び出しが多く必要になりそうです。
正確な実装方法の例を示すことができれば、非常に役に立ちます。または、これを行うためのコードが既に存在する場合 (おそらく別のプロジェクトの一部)。もう 1 つの助けは、実装全体が開発者に対して完全に透過的であるように、標準の Java ストリーミング構造に直接接続することです。
(編集:重複しているように見えるJNIインターフェースを介して出力ストリームを共有していることがわかりましたが、実際にはあまり役に立ちませんでした.彼は探していた答えを見つけられなかったようです)
c++ - << 演算子と再帰のオーバーロード
次のコードを試しました:
これをコンパイルして実行すると、期待どおりです。無限ループ。cout
フレンド関数内のステートメントを削除すると、再帰は発生しません。なぜそうなのですか?
c++ - streambuf または basic_ostringstream を派生していますか?
operator<< を使用してスローされるメッセージを作成できるように、stringstream を派生させたいと考えています。API は次のようになります。
これは
だから私がしたことは、「オーバーフロー」メソッドをオーバーロードし、ostream(&errorbuf) を作成する errorbuf (streambuf から継承) を作成することです。代わりにbasic_ostringstreamなどから継承すべきではないのだろうか...
c++ - std::ostream精度の小数点以下の最小桁数を設定する
std :: ostreamが出力する小数点以下の「最小」数を設定する方法はありますか?
たとえば、印刷したい2つの未知のdouble変数があるとします(説明のためにここに値を追加しました)。
b
正確に出力するように最大小数点精度を設定できます
「最大」精度を維持しながら「最小」精度(小数点以下の最小桁数)を設定する方法はありますか?
収量
いいえ
?
ありがとう!フィル
これに対する簡単な答えは「いいえ」です。ストリームの精度設定は1つだけで、最大精度と最小精度を区別する機能はありません。寛大なアドバイスをありがとうございました!
c++ - int c=0; の結果。カウト<
私はそれが01であるべきだと思いますが、誰かが「未定義」と言っています。その理由は何ですか?
私はそれが01であるべきだと思いますが、誰かが「未定義」と言っています。その理由は何ですか?
私はそれが01であるべきだと思いますが、誰かが「未定義」と言っています。その理由は何ですか?
理由の 1 つは、抽象メソッドを使用したコレクションforeach
よりも、抽象メソッドを使用したコレクションの具体的な実装を作成する方がはるかに簡単だからだと思いiterator
ます。たとえば、C# では、メソッドの実装をGetEnumerator
メソッドであるIEnumerable<T>
かのように記述できますforeach
。
(コンパイラは、 を介して反復を駆動する適切なステート マシンを生成しますIEnumerator
。) Scala では、Iterator[T]
これを行うには独自の の実装を作成する必要があります。の場合Traversable
、上記の実装と同等のことができます。
c++ - wostream から ostream に変換するにはどうすればよいですか
ostream を受け取る関数を使用していますが、wostream を使用しています。一方を他方に変換する方法はありますか?
特に、ostream を使用する boost::write_graphviz を使用したいのですが、現在、wostream の << 演算子を使用しています。
c++ - C++ostream挿入演算子でコンテキストを利用できるようにする必要があります
私が取り組んでいるAPIの場合、ユーザーがカスタムオブジェクトをに挿入できるようにしたいのですostream
が、これらのオブジェクトはそれ自体では意味がなく、メモリに制約があり、コンテキストの追加のポインターや参照を含めることができません。(メモリが限られている組み込みシステムでは、数千万の16- / 32- / 48ビットオブジェクトを考えてみてください。)
ユーザーが基になるコンテキストを初期化し、次のオブジェクトの1つを検索するとします。
まったく異なるスコープで、おそらくユーザーの明示的なコードから遠く離れてネストされている場合は、オブジェクトをに挿入する必要がありますが、ostream
使用ddb
できません。
twによってカプセル化された実際の値はです97,594,974
が、必要な出力は次のとおりです。
これが機能するためには、適切な挿入演算子がにアクセスする必要がありますがddb
、静的またはグローバル変数または関数に依存することはできません(マルチスレッドの理由により)。私がやりたいのは、ユーザーが次のようなストリームラッパーを要求して使用できるようにすることです。
返されるostreamのサブクラスには、それを必要とする特別なストリームインサーターが使用するddbへの参照と、std::cout
すべての出力を転送する元のストリーム(この場合)への参照が含まれます。
残念ながら、私が思いついた継承または構成スキームは、コード化するのが面倒であり(大きな懸念ではありません)、ユーザーにとって問題になる可能性があります(はるかに大きな懸念)。挿入演算子でddbをエレガントに利用できるようにする方法に関する提案はありますか?私はboost.Iostreamsをわずかに認識していますが、それがここで私を助けるかどうかはわかりません。
c++ - OStream への Unicode 文字の書き込み
私はユニコード/ワイド文字を扱っており、toString メソッド ( Java ::toString equiv ) を作成しようとしています。ostream はワイド文字を処理しますか?もしそうなら、それが Unicode であることをストリームの消費者に警告する方法はありますか?