問題タブ [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++ - C++ の ostream に奇妙な文字が表示される
単純なファイルシステムをエミュレートするプログラムがあり、ディレクトリの構造を出力したいので、<<
演算子をオーバーロードし、再帰で構造を通過する別の関数を呼び出しました。動作しますが、出力の一部の行の前に奇妙な 16 進数値がいくつかあります。で操作する方法に何か問題がありostream
ますか? (クラス定義は含めませんでしたが、問題ありません)
回答ありがとうございます。
c++ - 説明できない C++ エラー: エラー: '&' トークンの前に初期化子が必要です
このような投稿が他にもいくつかあることは知っていますが、この 1 つのエラーに 1 時間以上悩まされていて、理解できません。これが問題を引き起こしているコードです
...
ここでは、エラーは 1 行目と 28 行目にあり、istream と ostream がオーバーロードされています。
ご協力いただきありがとうございます!
c++ - 解析に関連して、トークンとは正確には何ですか
C ++でパーサーとライターを使用する必要があります。関数を実装しようとしていますが、トークンが何であるかわかりません。私の機能/操作の1つは、生成するトークンがさらにあるかどうかを確認することです
bool パーサー::hasMoreTokens()
これについてどうすればいいですか、助けてください
それで!
テキストを含むテキスト ファイルを開いていますが、すべての単語が小文字になっています。より多くのトークンがあるかどうかを確認するにはどうすればよいですか?
これは私が持っているものです
c++ - xsputnとオーバーフローでostreamとstreambufの問題を継承する
私は自分の ostream を作成することと、それに加えて、ostream のバッファーを処理するための streambuf について調査を行ってきました。私は実際にほとんどの作業を行っています。ストリームに (<<) を挿入して、問題なく文字列を取得できます。仮想関数 xsputn を実装することでこれを行います。ただし、ストリームに文字列の代わりに float または int を入力 (<<) すると、xsputn が呼び出されることはありません。
コードを確認したところ、ストリームが do_put を呼び出し、次に f_put を呼び出していることがわかりました。これは、最終的に一度に 1 文字ずつ float をバッファーに入れようとします。バッファーをスペースなしで残して、float と int のデータを取得すると、仮想関数の実装である overflow(int c) を呼び出すことができます。
ここに問題があります。フロートがいつバッファーに入れられたかを知る必要があります。別の言い方をすれば、ストリーミングされる特定の値に対してオーバーフローが呼び出されるのがこれが最後になるのはいつかを知る必要があります。したがって、それをバッファにコピーしてから、バッファがいっぱいになるのを待って関数を呼び出すことができます。
出力をキャッシュしてから、入力値ごとに一度に送信する必要があるという点で、ostream設計を悪用していることは確かです(<<)。
とにかく明確にするために、私が撮影しているものを別の方法で言い直します. 私が間違った方法で進んでいる可能性が非常に高いです。
継承された ostream と streambuf を使用して、それに値を入力し、型変換を処理できるようにしたいです。次に、その情報を別のオブジェクトに渡し、streambuf にハンドルを渡します (為に?)。そのオブジェクトには高価な i/o があるため、一度に 1 文字ずつデータを送信したくありません。
これが不明な場合は、事前に申し訳ありません。そして、お時間をいただきありがとうございます。
c++ - C++ の operator<< および >> メソッドがヘッダー ファイルにあり、非常に間違っています。
ヘッダー ファイルにこのコードがあり、ostream と istream の行で大量のエラーが発生しました。エラーの 1 つは、「&」の前に「;」がありません」で、混乱しています。
前もって感謝します
c++ - std::ostream 演算子 << での const_string のサポート
http://libcxx.llvm.org/がUbuntuまたはGCCで事前にパッケージ化されて利用可能にboost::const_string
なるまで、私は現在非常に賢いパッケージを使用しています。libcxxもデフォルトで _small-string 最適化 (SSO) を使用します。ただし、への出力に対するデフォルトのサポートは不足しています。コード__versa_string
ext/vstring.h
std::string
__versa_string
std::ostream
x
c-string via を強制しc_str()
ない限り機能しません。
これはコンパイルされ、期待どおりに動作します。次の行を追加しましたconst_string.hpp
は既に知られており、 のようにを検索して計算する必要がないx.c_str()
ため、これによりパフォーマンスが向上するはずです。私は私のために働いていますが、それがすべての場合に機能するかどうかはわかりません。私は何かを逃しましたか?size()
NULL
c_str()
c++ - 片方向リスト C++ ostream および istream -- メモリ アドレスを出力する
私はこれに本当に慣れておらず、現在、単一リンクリストを学習しています。私はいくつかのコードを書いていますが、本当に混乱しています。読み取りメソッドと書き込みメソッドを作成しようとしています。テストハーネスがありますが、変更できません。ストリームを読み取ってストリームを出力できるようにしたいだけなので、メモリアドレスが返されません。
誰かが本当に簡単な方法で説明して、このコードを修正するのを手伝ってもらえますか?
そしてヘッダーファイルで
ありがとう!
c++ - C++ toString メンバー関数と ostream 演算子 << テンプレートによる統合
私は初心者の C++ 開発者で、テンプレートを介したオペレーターの統合について質問がtoString
あります。ostream
私はそのようなコードを持っています:
コードはエラーなしでコンパイルされ、アプリケーションは正常に実行されました。そのようなアプローチを使用するのは良いことですか?ブーストの助けを借りずに実装したかったのです。
c++ - 派生クラスの演算子が再定義されていますが、親クラスを引き続き使用しています
ostream
operator <<
具体的には、基本クラスから 2 つの派生クラスを使用できるようにしたいと考えています。
私が作成しているプログラムは、「仮想ストア」のさまざまな「製品」の製品詳細を印刷することになっています。製品の中には、2 種類の本があります。これらの各本は、独自のものを保持することになっています。
さらに、タイプChildrensBook
は最低年齢を保持するTextBook
必要があり、等級を保持する必要があります。
私はクラスを定義Book
し、それから派生したクラスChildrensBook
とTextBook
. 私の質問は、 を使用ostream
operator <<
して情報を印刷することについてです。
Book クラスで一般的な << 関数を定義して、両方の派生クラスに共通するすべての情報を出力し、派生クラスの << の再定義でそれを参照できますか?
例えば、
そして、どういうわけか派生クラスで:
したがって、私の質問は次のように要約できると思います: 子演算子内から親演算子を呼び出すことはできますか? もしそうなら、どの構文を使用すればよいですか?
私が思いついたもう 1 つのアイデアは、親の print 演算子を使用する子用の関数を作成し、子の print 演算子内からその関数を呼び出すことです。つまり、再定義中にオペレーターを呼び出そうとしたのではなく、親オペレーターを使用し、子オペレーターを個別に再定義する必要があります。
c++ - C++ での ostream 演算子の継承とオーバーライド
私はこれに対する答えを見つけようとしていますが、私とまったく同じ問題を抱えている人は誰もいないようです.
私はいくつかの派生クラスを扱っています。これらのそれぞれの ostream 演算子 << は、それぞれに共通するものと、それぞれに固有のものを出力する必要があります。後で、これらの派生クラスからさらに派生させたいと思います。また、新しい派生クラスは、その上の「世代」にあるものを出力する必要があります。
例えば:
基本クラスの .h ファイル
Base.cpp ファイルには、次の行が含まれています。
次に、次を導出します: (FirstDerived.h)
FirstDerived.cpp:
次に、導出したい:
Second.cpp:
問題は、プログラムの最初の宣言か、のような行のいずれかである可能性が高いと思いますBase::operator<<
。
別の可能性は、継承されたすべてのクラスの .h ファイルで再宣言していないことです。そうすべきですか、そうであれば、どの構文を使用すればよいですか?
この方法を使用するように提案されましたstatic_cast
が、私の教授 (課題を書いた人であり、そのために私たちにあまり助けを与えない人) は、それを行うためのより良い方法があると言いました。助言がありますか?